获取应用版本是崩溃

时间:2013-03-24 15:40:43

标签: objective-c

我有这个代码来获取应用版本并将其保存到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

你能帮我识别这个错误吗?

非常感谢。

4 个答案:

答案 0 :(得分:0)

我不得不分配字典:

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

答案 1 :(得分:0)

您没有alloc + init - 编辑字典dict

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

这是必须的。

答案 2 :(得分:0)

您不创建字典。由于它(可能)是一个局部变量,因此保持未初始化会导致其保持未指定的值。在您的情况下,它指向的对象不是NSMutableDictionary。实际上实例化一个,它将工作:

NSMutableDictionary *dic = [NSMutableDictionary new];

答案 3 :(得分: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:,除非您确实有要格式化的字符串。