我正在尝试更新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"];
错误突出显示下面的return语句,出现以下错误“Thread 1:Program received signal:”SIGABRT“
int main(int argc, char *argv[])
{ @autoreleasepool{
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
我们将非常感谢您提供的任何帮助。非常感谢提前。
答案 0 :(得分: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"];
答案 1 :(得分:1)
您可以修改plist文件的值,只要它不在bundle中。
当你在对象中声明Boolean属性时,它需要使用" BOOL"而不是"布尔"。保存文件并尝试再次读取时,这将导致错误。