2015-06-08 5 views
0

Я нашел некоторые коды, как это:NSMutableArray AddObject используя значение и ключ

for (int i = 0 ; i < pinyin_array.count; i++) { 
    [pinyins_arr addObject:@{k_PINYIN : pinyin_array[i]}]; 
} 

где pinyins_arr является NSMutableArray и Kk_PINYIN является NSString. Я не уверен, правильно это или нет. Я думаю, что это должно быть NSMutableDictionary, чтобы добавить объект пары ключей и значений. Если это верно, тот же ключ будет использоваться для нескольких значений, каков будет последний массив?

ответ

2

Синтаксис @{} является сокращением для создания NSDictionary. Вторая линия может быть многословно переписана как:

[pinyins_arr addObject:[NSDictionary dictionaryWithObject:pinyin_array[i]] forKey:k_PINYIN]

Вы добавляете NSDictionary объекты к вашему NSMutableArray, так что вы будете иметь множество словарей, которые все имеют один и тот же ключ. Это правильно, если это то, что вы хотите.

+0

Спасибо, я понял это ... – mmjuns

2

Чтобы сказать, если это правильно или нет, это не черный и белый.

Это правильно, так как законно хранить массив словарей, подобных этому.

Неправильно, так как нет необходимости использовать массив словарей вообще, поскольку в словарных клавишах нет изменений; вы можете просто сохранить массив значений, что и есть pinyin_array.

+0

Даже просто массив, который, кажется, у них уже есть. – Fogmeister

+0

@Fogmeister Извините, я не следую. Разве я уже не упоминал об этом? – Droppy

+1

lol! Да, да, да. Извините, с моей стороны не сработало. – Fogmeister

0

Попробуйте эту логику

NSObject *collectionIndexString = indexPath; 
NSMutableDictionary *tempDict = [myNSMutableArray[row] mutableCopy]; 
tempDict[@"collectionIndex"] = collectionIndexString;// Setting Key and Value 
[myNSMutableArray replaceObjectAtIndex:row withObject:tempDict]; 
Смежные вопросы