2011-12-08 9 views
3
-(void)saveDictionary:(int)counter 
    { 
     NSString *path=[[NSBundle mainBundle] pathForResource:@"Data" ofType:@"plist"]; 
     NSString *test = [NSString stringWithFormat:@"%d", counter]; 
     [theDictionary setObject:test forKey:@"Counter"]; <---- Error 
     [theDictionary writeToFile:path atomically:YES]; 
    } 

    - (void)applicationDidEnterBackground:(UIApplication *)application 
    { 
     [self saveDictionary:[_viewController counter]]; 
    } 

エラー "認識されていないセレクタは、インスタンスに送信":NSMutableDictionary

-[NSCFString setObject:forKey:]: unrecognized selector sent to instance 
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSCFString setObject:forKey:]: unrecognized selector sent to instance 

私はplistのキーから "カウンタ" の値をロードすることができます。 同じキー "カウンタ"の新しい値を保存する場合は、エラーです。 ヘルプ、時間を要しました。

さようならここ

theDictionaryを初期化するコードです:

-(void)initDictionary { 
    if (theDictionary == nil) { 
     NSString *path=[[NSBundle mainBundle] pathForResource:@"Data" ofType:@"plist"]; 
     theDictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:path]; 
     theString = [theDictionary objectForKey:@"Counter"]; 
    } 
} 

はそれを見つけました!

theString = [[NSString alloc] initWithFormat:[theDictionary objectForKey:@"Counter"]]; 

ありがとうございます! theDictionaryに格納されたオブジェクトが実際NSStringNSString-setObject:forKey呼び出されたメソッドが含まれていないあるため

答えて

3

です。 theDictionaryが割り当てられている場所をコードで確認し、実際にはNSMutableDictionaryであることを確認してください。

0

これは 'theDictionary'が辞書ではないことを示しています。ほとんどの場合、以前リリースされていて、一部のNSStringがその役割を果たしています。

ARCを使用していますか?どこでtheDictionaryが定義されたのですか?

これを追跡するためにゾンビを試しましたか?それが助けになるはずです。

0

あなたのプロパティtheDictionaryは実際には辞書ではなく、文字列(NSString)であるようです。 theDictionaryはどこに定義されていますか?

1

theDictionaryのようなサウンドは、NSMutableDictionaryの代わりに文字列です。それはどこに作られ、その間に何が起こったのですか?

3

初期化を確認してください。あなたはこのようにできました。

NSMutableDictionary * dictoForSyncing = [[NSMutableArrayの ALLOC] INIT]。

0
NSMutableArray *myObjFromFile = ....; 
NSMutableDictionary *tmpDictFromFile = 
    [[[myObjFromFile objectAtIndex:xx] mutableCopy]; mutableCopy]; 

[tmpDictFromFile setObject:"YOUR OBJECT" 
        forKey:"YOUR KEY"]; 
関連する問題