2016-12-03 13 views
1

Я отправил запрос на получение данных с сервера. Теперь у меня есть NSDictionary с определенными данными. Мне нужно отобразить его на диаграмме, поэтому мне нужно преобразовать данные в соответствующие. Вот данные, которые я получаю от сервера:Задайте значения NSMutableDictionary для значений в другом

dates =  (
     "01.01.2016", 
     "01.01.2016", 
     "01.01.2016" 
     ...) 

closes =  { 
     0 =   (
      1, 
      1, 
      1, 
      ...) 
     } 

Мне нужно, чтобы преобразовать его в этот формат:

{ 
    "01.01.2016" = 1; 
    "01.01.2016" = 1; 
    "01.01.2016" = 1; 
    ... 
} 

Как я могу это сделать?

+0

ли ваше настоящее имя Стив Джобс? –

ответ

0
NSArray *dates = ... 
NSArray *closes = ... 

NSMutableDictionary *result = [NSMutableDictionary new]; 
for (int i = 0; i < dates.count; i++) { 
    result[dates[i]] = closes[i]; 
} 
NSLog(@"%@", result) 

Обратите внимание, что даты и закрывает массивы должны иметь одинаковую длину

0

Предполагая, что количество «даты» и closes элементов равны:

NSMutableDictionary dataOut = [NSMutableDictionary dictionary]; 
for (int index = 0; index < dataIn[@"dates"].count; index++) 
{ 
    dataOut[dataIn[@"dates"][index]] = dataIn[@"closes"][index]; 
} 

В зависимости от того, насколько вы уверены, и о том, как вам нужно, чтобы этот код был правильным, вы можете добавить проверки (и обработку ошибок), чтобы охватить вышеупомянутое предположение.

0

Если у вас есть 2 массива и вам нужно создать словарь затем _productArray2 & _productArray1

NSDictionary * productDictionary = [NSMutableDictionary dictionary]; 
    for (NSUInteger index =0; index < _productArray1.count; index ++) { 
     [productDictionary setValue:_productArray1[index] forKey:_productArray2[index]]; 
    } 

, и если у вас уже есть словарь хотите заменить на заданное значение для него

NSArray * allKeys = [productDictionary allKeys]; 

for (NSUInteger index =0; index < allKeys.count; index ++) { 
    [productDictionary setValue:_productArray[index] forKey:allKeys [index]]; 
}