更新plist字典中的布尔值

时间:2012-06-15 17:06:21

标签: objective-c boolean plist nsmutabledictionary

我正在尝试更新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]));
     }
}

我们将非常感谢您提供的任何帮助。非常感谢提前。

2 个答案:

答案 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"而不是"布尔"。保存文件并尝试再次读取时,这将导致错误。