2013-11-19 2 views
5

У меня есть NSMutableArray, который выглядит следующим образом:SetValue: forUndefinedKey этот класс не является значением ключа кодирования-совместимый

(
     { 
     caption = ""; 
     urlRep = "assets-library://asset/asset.JPG?id=6FC0C2DC-69BB-4FAD-9709-63E03182BEE1&ext=JPG"; 
    }, 
     { 
     caption = ""; 
     urlRep = "assets-library://asset/asset.JPG?id=324E4377-0BCD-431C-8A57-535BC0FC44EB&ext=JPG"; 
    } 
) 

И им пытаются установить значение заголовка, как это:

[[[self.form valueForKey:@"photos"] objectAtIndex:indexPath.row] setValue:@"hi" forKey:@"caption"]; 

([self.form valueForKey:@"photos"] это массив)

но я получаю:

*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<__NSDictionaryI 0xa68ec40> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key caption.' 

EDIT:

Если я использую SetObject forKey я получаю:

-[__NSDictionaryI setObject:forKey:]: unrecognized selector sent to instance 0xa6a88f0 
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSDictionaryI setObject:forKey:]: unrecognized selector sent to instance 0xa6a88f0' 

Как это исправить?

ПРАВИЛЬНЫЙ КОД, чтобы исправить это:

NSMutableDictionary *m = [[[self.form valueForKey:@"photos"] objectAtIndex:indexPath.row ] mutableCopy]; 
NSMutableArray *array = [self.form valueForKey:@"photos"]; 
[m setObject:textField.text forKey:@"caption"]; 
[array replaceObjectAtIndex:indexPath.row withObject:m]; 
+0

Что делает 'setObject: forKey:' do? – trojanfoe

+0

@trojanfoe все еще сбой, добавлена ​​точная ошибка. – BluGeni

ответ

21

Причина вы получаете исключение, потому что у вас есть массив NSDictionary объектов, которые не отвечают на setObject:forKey: (или setValue:forKey:).

Возможно, вы захотите преобразовать их все в NSMutableDictionary объектов, как только вы их получите.

+0

Как перейти от массива объектов NSDictionary к NSMutableDictionary – BluGeni

+4

@BluGeni Сделайте копию с помощью 'mutableCopy'. – trojanfoe

+0

получил, спасибо! Я выложу точный код, который я использовал, чтобы он мог помочь любому, кому это нужно. – BluGeni

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

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