Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 更新plist字典中的布尔值_Objective C_Boolean_Plist_Nsmutabledictionary - Fatal编程技术网

Objective c 更新plist字典中的布尔值

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

我试图在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”


如果您能提供任何帮助,我们将不胜感激。非常感谢。

仅仅因为
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。