Ошибка загрузки значения из NSDictionary (iPhone) - PullRequest
0 голосов
/ 19 декабря 2011

У меня проблема с чтением значения из NSDictionary. Вот мои настройки:

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];

Ответы [ 2 ]

3 голосов
/ 19 декабря 2011

Если value имеет тип NSDicitonary, используйте вместо этого:

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

2 голосов
/ 19 декабря 2011

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

NSString *stringValue = [value stringForKey:kMyValueConstant]; 

с

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