2011-12-19 1 views
0

У меня проблема с чтением значения из NSDictionary. Вот мои настройки:Неверная загрузка значения из NSDictionary (iPhone)

NSArray *data = [[NSUserDefaults standardUserDefaults] objectForKey:kMyConstant]; 
for(id value in data) 
{ 
    NSString *stringValue = [value stringForKey:kMyValueConstant]; // This is where the error is 
} 

Однако, когда он попадает в комментируемой строке я получаю следующее сообщение об ошибке:

2011-12-19 13:54:45.466 MyApp[12587:f803] -[__NSCFDictionary stringForKey:]: unrecognized selector sent to instance 0x6898f70 
2011-12-19 13:54:45.468 MyApp[12587:f803] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFDictionary stringForKey:]: unrecognized selector sent to instance 0x6898f70' 

Я действительно не понимаю, где проблема происходит. Вот код, я использую, чтобы настроить NSUserDefaults:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

// Create the NSDictionary to hold all of the data 
NSMutableDictionary *appDefaults = [NSMutableDictionary dictionary]; 

// Create a couple of samples 
NSMutableDictionary *sampleOne = [NSMutableDictionary dictionary]; 
[sampleOne setValue:@"Value A" forKey:kMyValueConstant]; 
NSMutableDictionary *sampleTwo = [NSMutableDictionary dictionary]; 
[sampleTwo setValue:@"Value B" forKey:kMyValueConstant]; 
NSMutableArray *list = [[NSMutableArray alloc] initWithObjects:sampleOne, sampleTwo, nil]; 
[appDefaults setValue:list forKey:kMyConstant]; 


[defaults registerDefaults:appDefaults]; 
[defaults synchronize]; 
+0

NSLog как 'data', так и' value', они не то, что вы ожидаете. – zaph

ответ

2

Просто замените

NSString *stringValue = [value stringForKey:kMyValueConstant]; 

с

NSString *stringValue = [value objectForKey:kMyValueConstant]; 
3

Если value является NSDicitonary типа, вы должны использовать это вместо того, чтобы:

NSString *stringValue = [[value objectForKey:kMyValueConstant] stringValue];