首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读写NSDictionary?

读写NSDictionary?
EN

Stack Overflow用户
提问于 2011-02-24 11:01:54
回答 1查看 1.2K关注 0票数 1

在我的应用程序中,我有一个表格视图,用户在导航栏中按下"add“按钮,一个新的单元格就会添加到表格视图中。表中的数据是从NSArray加载的,数组中的每个索引都存储一个具有4个键值对的NSMutableDictionary。每次添加单元格时,此数组都会保存到.plist中。现在,当用户选择表中的一行时,将加载详细信息视图。这个详细信息视图只是根据所选择的行从保存的.plist加载数据。

在这个详细视图中,我希望允许用户编辑字典中该特定行的数据。我一直在尝试不同的方法,我可以从字典中读取数据并将其加载到视图中,但当我尝试将数据保存回字典时,我的应用程序一直在终止。

有人能给我解释一下读写数据到NSMutableDictionary的正确方法吗?

这就是我将数据写回.plist的方式:

代码语言:javascript
复制
NSMutableArray *array = [[NSMutableArray alloc] initWithContentsOfFile:filePath];

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
dict = [array objectAtIndex:selectedRow];

NSString *tempA = [[NSString alloc] initWithFormat:@"%d pts", ivar_A];
NSString *tempB = [[NSString alloc] initWithFormat:@"%d pts", ivar_B];
NSString *tempC = [[NSString alloc] initWithFormat:@"%d pts", ivar_C];

[dict setValue:tempA forKey:@"keyA"];
[dict setValue:tempB forKey:@"keyB"];
[dict setValue:tempC forKey:@"keyC"];

[tempA release];
[tempB release];
[tempC release];

[array insertObject:dict atIndex:selectedRow];

//Save the modified array back to the plist
[array writeToFile:[self dataFilePath] atomically:YES];

[dict release];

[array release];
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-24 11:14:25

如果你使用[NSMutableDictionary alloc ],字典的内容仍然是不可变的,即使顶层容器是可变的,这在苹果的参考中有明确的说明。

NSDictionary Reference

由路径标识的文件中的字典表示形式只能包含属性列表对象(NSString、NSData、NSDate、NSNumber、NSArray或NSDictionary对象)。有关更多详细信息,请参见属性列表编程指南。此字典包含的对象是不可变的,即使字典是可变的。

如果需要再次使数据结构可写,则需要使用可变类型创建已加载数据结构的副本,例如

代码语言:javascript
复制
[NSMutableDictionary dictionaryWithDictionary:oOrig]

等。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5099901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档