0

iphone アプリの plist 辞書でブール値を更新しようとしています。plist ディクショナリには、いくつかの文字列と 2 つのブール値が含まれています。以下は私の現在のコードです。

最初に plist を定義し、次に NSMutableDictionary を定義します。以下のコードの 3 行目を実行すると、エラーが発生します。

NSString *plistFile = [[NSBundle mainBundle] pathForResource:@"Property List" ofType:@"plist"];
NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithContentsOfFile:plistFile];

[[dict objectForKey:@"Day 1"] setBool:TRUE forKey:@"Bookmarked"];

このエラーは、次のエラー「スレッド 1: プログラムがシグナルを受信しました: "SIGABRT"」で以下の return ステートメントを強調表示します

int main(int argc, char *argv[])
{    @autoreleasepool{   
     return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
     }
}

あなたが提供できるどんな助けも大歓迎です。よろしくお願いします。

4

2 に答える 2

2

ミュータブルだからといってdict、サブディクショナリがミュータブルであるとは限りません。メソッドもNSMutableDictionaryありませんsetBool:forKey:

NSMutableDictionary *subDict = [[dict objectForKey:@"Day 1"] mutableCopy];
[subDict setObject:[NSNumber numberWithBool:TRUE] forKey:@"Bookmarked"];
[dict setObject:subDict forKey:@"Day 1"];
于 2012-06-15T18:20:47.570 に答える