Объединение двух массивов с одинаковым индексом в задаче C - PullRequest
0 голосов
/ 06 июля 2018

Я хочу объединить два массива с одинаковым индексом, Это мой JSON

"tier_info": [
    {
        "tier_id": "1",
        "tier_name": "tier-1",
        "price": "3.9",
        "ios_id": "tier-1",
        "android_id": "tier-1"
    },
    {
        "tier_id": "2",
        "tier_name": "tier-2",
        "price": "4.9",
        "ios_id": "tier-2",
        "android_id": "tier-2"
    },
    {
        "tier_id": "3",
        "tier_name": "tier-3",
        "price": "5.9",
        "ios_id": "tier-3",
        "android_id": "tier-3"
    },
    {
        "tier_id": "4",
        "tier_name": "free",
        "price": "0",
        "ios_id": "free",
        "android_id": "free"
    }
]

Я использую пользовательский инструмент выбора, теперь я хочу, чтобы "tier_name" с "ценой" в том же индексе массива [например, "Уровень_1: 3.9"]. Код слияния двух массивов:

    NSMutableArray *tierTitles = [[NSMutableArray alloc] init];
    tierTitles = [tierArray valueForKey:@"tier_name"];
    NSMutableArray *tierPrice = [[NSMutableArray alloc] init];
    tierPrice = [tierArray valueForKey:@"price"];

    NSMutableArray *combined = [[NSMutableArray alloc] init];
    for (NSUInteger i = 0; i < tierArray.count; i++) {
        [combined addObject: @{tierTitles[i]:tierPrice[i]}];
    }

и я получил это

(
    {
    "tier-1" = "3.9";
},
    {
    "tier-2" = "4.9";
},
    {
    "tier-3" = "5.9";
},
    {
    free = 0;
}
)

Я хочу это как:

  (
    "tier-1" = "3.9";
    "tier-2" = "4.9";
    "tier-3" = "5.9";
    free = 0;
  )

что я тут делаю неправильно ... какой правильный способ сделать это?

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

Я думаю, что вы спрашиваете, что вам нужен NSDictionary, который содержит и имя, и цену в качестве ключевого значения. Вам нужно перечислить каждый объект и добавить его в массив, если значение существует: -

NSMutableArray *results=[NSMutableArray new];
for (NSDictionary *tier in tierArray]) {
    if ([tier[@"tier_name"] length] && [tier[@"price"] length]) {
        [results addObject:@{tier[@"tier_name"]:tier[@"price"]:}];
    }
}

Или создайте изменяемый словарь, например: -

NSMutableDictionary *results=[NSMutableDictionary new];
for (NSDictionary *tier in tierArray) {
    if ([tier[@"tier_name"] length] && [tier[@"price"] length]) {
        [results setValue:tier[@"price" forKey:tier[@"tier_name"]];
    }
}
0 голосов
/ 06 июля 2018

Я думаю, вы должны добавить словарь в ваш объединенный массив, как показано ниже

 [tierTitles enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
    NSMutableDictionary*combinedDict = [[NSMutableDictionary alloc]init];
    [combinedDict setValue:[tierPrice objectAtIndex:idx] forKey:obj];
    [combined addObject: combinedDict];
}];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...