2013-03-24 4 views
-2

я имею этот код, чтобы получить версию приложения и сохранить его в nsdictionary:Получение приложение версия аварии

NSString *Version=[NSString stringWithFormat:@"%@",[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"]]; 

    NSLog(@"VERSION%@",Version); //prints the right thing 
    NSMutableDictionary *dic; 
    [dic setValue:Version forKey:@"version"]; //crash 
    [dic setValue:Errors forKey:@"errors"]; //work 

ошибка я получаю на аварии является:

setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key version 

Можете ли вы помочь моему определить эту ошибку?

Большое спасибо.

ответ

0

я должен был выделить словарь:

NSMutableDictionary *dic=[[NSMutableDictionary alloc]init]; 
0

Вы не alloc + init -ed словарь dict.

NSMutableDictionary *dic=[[NSMutableDictionary alloc] init]; 

Это обязательно.

0

Вы не создаете словарь. Так как это (предположительно) локальная переменная, оставив ее неинициализированные результаты в ней, удерживая неопределенное значение. В вашем случае он указал на объект, который не был NSMutableDictionary. На самом деле один экземпляр, и он будет работать:

NSMutableDictionary *dic = [NSMutableDictionary new]; 
0

Вам нужно позвонить setObject:forKey:, а не setValue:forKey:.

NSString *Version=[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"]; 

NSLog(@"VERSION = %@", Version); //prints the right thing 
NSMutableDictionary *dic = [[NSMutableDictionary alloc] init]; 
[dic setObject:Version forKey:@"version"]; //crash 
[dic setObject:Errors forKey:@"errors"]; //work 

использовать setValue:forKey: и valueForKey: Только тогда, когда вы действительно имели в виду, чтобы использовать кодирование ключ-значение. В противном случае используйте правильные setObject:forKey: и objectForKey:.

Кроме того, не используйте stringWithFormat:, если у вас на самом деле нет строки для форматирования.

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