0

次のNSMutableDictionaryように初期化された があります。

dictionary = [NSMutableDictionary dictionaryWithDictionary:@{
    @"0": @{
        @"title": @"Description",
        @"value": @"Enter Description",
    },
    @"1": @{
        @"title": @"Amount",
        @"value": @"Enter Amount",
    }
}];

今、私@"Enter Description"がやろうとしていたことを次のように変更したいと思います:

NSMutableDictionary *tempDictionary = [dictionary objectForKey:@"0"];
[tempDictionary setObject:@"TEST" forKey:@"value"];
//The next line doesn't get executed yet since the error occurs at the line above.
//So Maybe there is something wrong with the one below as well ;-)
[dictionary setObject:tempDictionary forKey:@"0"];

ただし、次のエラー メッセージが表示されます。

*** キャッチされない例外 'NSInvalidArgumentException' が原因でアプリを終了します。理由: '-[__NSDictionaryI setObject:forKey:]: 認識されないセレクターがインスタンスに送信されました

私が見つけたのは、何らかの形で にNSMutableDictionary変換されたNSDictionaryに違いないということです。これが、編集できない理由です。たぶん、あなたは私がこれを理解するのを手伝って、正しい方向に私を向けるか、私が答えを見つけることができるリソースを見せてくれますか?

4

1 に答える 1

1

あなたの「サブ辞書」は変更できません。

これを試して:

dictionary = [NSMutableDictionary dictionaryWithDictionary:@{
                                                             @"0": [NSMutableDictionary dictionaryWithDictionary:@{
                                                                     @"title": @"Description",
                                                                     @"value": @"Enter Description",
                                                                     }],
                                                             @"1": [NSMutableDictionary dictionaryWithDictionary:@{
                                                                     @"title": @"Amount",
                                                                     @"value": @"Enter Amount",
                                                                     }]
                                                             }];
于 2015-08-19T21:15:47.353 に答える