-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

このエラーを特定するのを手伝ってもらえますか?

どうもありがとう 。

4

4 に答える 4

0

私は辞書を割り当てなければなりませんでした:

NSMutableDictionary *dic=[[NSMutableDictionary alloc]init];
于 2013-03-24T15:42:28.180 に答える
0

allocあなたは辞書を+ init-edしませんでしたdict

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

それは必須です。

于 2013-03-24T15:42:59.293 に答える
0

辞書を作成しません。これは(おそらく)ローカル変数であるため、初期化されていないままにすると、指定されていない値が保持されます。あなたの場合、それはではないオブジェクトを指していますNSMutableDictionary。実際にインスタンス化すると、機能します。

NSMutableDictionary *dic = [NSMutableDictionary new];
于 2013-03-24T15:44:16.517 に答える
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

Key-Valueコーディングを実際に使用する場合にのみ使用setValue:forKey:してください。valueForKey:それ以外の場合は、適切なsetObject:forKey:とを使用してくださいobjectForKey:

また、stringWithFormat:実際にフォーマットする文字列がない限り、使用しないでください。

于 2013-03-24T16:12:33.233 に答える