0

我正在尝试更新 iphone 应用程序中 plist 字典中的布尔值。plist 字典包含几个字符串和两个布尔值。以下是我当前的代码。

我首先定义了 plist,然后定义了 NSMutableDictionary。当下面的第三行代码运行时,我得到一个错误。

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

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

该错误突出显示下面的返回语句,并显示以下错误“线程 1:程序收到信号:“SIGABRT”

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 回答
1

只要 plist 文件不在包中,您就可以修改它的值。

当您在对象中声明布尔属性时,它需要使用“布尔”而不是“布尔”。当您保存文件并尝试再次读取时,这将导致错误。

于 2014-05-23T01:49:58.807 回答