从 iPhone 上的表格视图中下载的内容将数组保存到 PList

Posted

技术标签:

【中文标题】从 iPhone 上的表格视图中下载的内容将数组保存到 PList【英文标题】:Saving Array to PList from downloaded content in table view on iPhone 【发布时间】:2009-07-29 12:29:54 【问题描述】:

我从最近发布的论坛中复制了这些帖子,但没有得到回复。

我有我的代码所有设置的基础,它是一个带有导航控制器的钻取表,它故意将数据从具有一些空值的 plist 加载到 nsmutabledictionary 中。根据命令,应用程序会下载信息,然后在 NSMutableArray 中设置 setValue。问题是这个 NSMutableArray 比 plist 的根低 3 级。我正在寻找一种方法来替换 plist 中加载并保存在 appdelegate 中的数组。我该怎么做?非常感谢您的帮助。

所以这可能没有多大意义。在 AppDelegate 中,它将 plist 文件加载到 NSMutableDictionary 中。 plist是这样的:

根 >标题(字符串) >行(数组) >>第 1 项(字典) >>>标题(字符串) >>>ID(字符串) >>>项目列表(数组) >>>>第1项(字典) >>>>>标题(字符串) >>>>>ID(字符串) >>>>>Value(String)-----------已下载的空值 >>>>第2项(字典) >>>>第 3 项(字典) >>>>第4项(字典) >>第 2 项(数组) >>第 3 项(数组) >>第 4 项(数组)

Rows 数组被发送到 RootViewController。当从 TableView 中选择其中一项并创建新实例时,将表数据源设置为该选定项的 ItemList。当用户按下按钮时,它会下载值并使用 [setValue: forKey:@"Value"] 在数组中设置值。这是它迷路的地方。我现在需要将此 ItemList 数组设置回主 Root 字典,然后将 Root 字典发送回 AppDelegate,以便可以调用 applicationWillTerminate [self.data writeToFile:] 并且不需要下载下载的信息下一次。

【问题讨论】:

【参考方案1】:

我不完全确定我了解您的问题是什么。将新值填充到数组中后,只需在字典上使用 setObject:forKey: 即可替换旧数组。

如果您在获取应用委托的引用时遇到问题,可以使用 [[UIApplication sharedApplication] 委托]

如果问题在于您的字典和数组是嵌套的,因此您需要更改多个对象来设置值,请考虑使用 mutableCopy 在加载时从 plist 生成可变数组和字典。或者,也许考虑使用复杂的数据表示,而不是读写 plist 格式。

【讨论】:

【参考方案2】:

我相信我可能不得不使用 forKeyPath

【讨论】:

以上是关于从 iPhone 上的表格视图中下载的内容将数组保存到 PList的主要内容,如果未能解决你的问题,请参考以下文章

iphone dev - 异步加载表格内容

使用持久存储协调员?

如何将按钮样式的单元格添加到 iPhone 应用程序的表格视图中?

根据滚动视图上的内容增加表格视图高度

如何在 iPhone 应用程序中重新加载表格视图

将 NSMutableArray 加载到 iPhone 的表视图中时无法识别的选择器