2013-10-13 3 views
-2

У меня есть изменяемый массив как это:NSMutableArray заменить элементы

[0] { 
name => "Mark" 
surname => "Smith" } 
[1] { 
name => "John" 
surname => "Mayer" } 
[2] { 
name => "Bob" 
surname => "Moltz" } 
[3] { 
name => "Rick" 
surname => "Wayne" } 
... 

То, что я хочу и не понял, это посмотреть на фамилии и заменить его, когда я нашел Мольц.

Я много искал, но не мог получить ответ. Кажется, что я могу использовать objectAtIndex или valueForKey, но мне нужно использовать их оба.

Буду признателен за небольшую помощь. Благодарю.

+0

Таким образом, каждая позиция массива хранит словарь? Или объект с именем и фамилией полей? – ssantos

+0

Ну, вы просто перебираете элементы массива и заменяете объект, если значение ключа совпадает с вашим предикатом. –

+2

Замените что? Весь словарь (или объект)/просто фамилия? Все случаи? – Wain

ответ

1

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

Использование NSMutableDictionary итерация

for (NSMutableDictionary *dict in mutableArray) { 
     NSString *value = [obj objectForKey:@"surname"]; 
     if ([value isEqualToString:@"Moltz"]) { 
      [dict setObject:@"My new surname" forKey:value]; 
     } 
    } 

Использование KVC

for (NSObject *obj in mutableArray) { 
    NSString *value = [obj valueForKey:@"surname"]; 
    if ([value isEqualToString:@"Moltz"]) { 
     [obj setValue:@"My new surname" forKey:value]; 
    } 
} 
+0

В ОП не указывалось, являются ли вложенные словари изменяемыми или неизменяемыми. – jlehr

+0

Хорошая точка. Изменен ответ на использование KVC –

+0

@WilliamFalcon Я думаю, что OP может извлечь выгоду из просмотра как вашего первоначального ответа, так и вашего нового. –

Смежные вопросы