Objective c 更新plist字典中的布尔值
我试图在iphone应用程序中更新plist字典中的布尔值。plist字典包含几个字符串和两个布尔值。下面是我当前的代码 我首先定义plist,然后定义NSMutableDictionary。当下面的第三行代码运行时,我得到一个错误Objective c 更新plist字典中的布尔值,objective-c,boolean,plist,nsmutabledictionary,Objective C,Boolean,Plist,Nsmutabledictionary,我试图在iphone应用程序中更新plist字典中的布尔值。plist字典包含几个字符串和两个布尔值。下面是我当前的代码 我首先定义plist,然后定义NSMutableDictionary。当下面的第三行代码运行时,我得到一个错误 NSString *plistFile = [[NSBundle mainBundle] pathForResource:@"Property List" ofType:@"plist"]; NSMutableDictionary *dict = [NSMutabl
NSString *plistFile = [[NSBundle mainBundle] pathForResource:@"Property List" ofType:@"plist"];
NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithContentsOfFile:plistFile];
[[dict objectForKey:@"Day 1"] setBool:TRUE forKey:@"Bookmarked"];
错误突出显示了下面的返回语句,错误为“线程1:程序接收信号:“SIGABRT”
如果您能提供任何帮助,我们将不胜感激。非常感谢。仅仅因为
dict
是可变的并不意味着它的子字典是可变的。而且NSMutableDictionary
没有setBool:forKey:
方法
NSMutableDictionary *subDict = [[dict objectForKey:@"Day 1"] mutableCopy];
[subDict setObject:[NSNumber numberWithBool:TRUE] forKey:@"Bookmarked"];
[dict setObject:subDict forKey:@"Day 1"];
仅仅因为
dict
是可变的并不意味着它的子字典是可变的。而且NSMutableDictionary
没有setBool:forKey:
方法
NSMutableDictionary *subDict = [[dict objectForKey:@"Day 1"] mutableCopy];
[subDict setObject:[NSNumber numberWithBool:TRUE] forKey:@"Bookmarked"];
[dict setObject:subDict forKey:@"Day 1"];
您可以修改plist文件的值,只要它不在捆绑包中
在对象中声明布尔属性时,它需要使用“BOOL”而不是“Boolean”。保存文件并再次尝试读取时,这将导致错误。您可以修改plist文件的值,只要它不在捆绑包中
在对象中声明布尔属性时,需要使用“BOOL”而不是“Boolean”。这将在保存文件并尝试再次读取时导致错误 我在我的按钮点击事件中添加了这段新代码,代码不再崩溃,但是包含书签布尔值的第一天字典没有更新为TRUE或YES。在运行应用程序和关闭iphone模拟器后,我检查了plist。别忘了自动释放mutableCopy,否则会泄漏it@user1459279:您确定在字典更新后plist被覆盖吗?自动释放是arc的错误。plist不更新,只更新字典,它们是两个独立的实体,一个在内存中,一个在磁盘上。您不能使用[NSBundle mainBundle]保存数据,只能访问数据。感谢您让我知道我无法永久修改plist。我在我的按钮单击事件中添加了此新代码,代码不再崩溃,但包含书签布尔值的第一天字典没有更新为TRUE或YES。在运行应用程序和关闭iphone模拟器后,我检查了plist。别忘了自动释放mutableCopy,否则会泄漏it@user1459279:您确定在字典更新后plist被覆盖吗?自动释放是arc的错误。plist不更新,只更新字典,它们是两个独立的实体,一个在内存中,一个在磁盘上。您不能使用[NSBundle mainBundle]保存数据,只能访问数据。感谢您让我知道我无法永久修改plist。