iOS将UIViews数组保存到文件然后重新加载

Posted

技术标签:

【中文标题】iOS将UIViews数组保存到文件然后重新加载【英文标题】:iOS saving arrays of UIViews to file then reloading 【发布时间】:2012-11-20 17:16:24 【问题描述】:

当我的应用程序终止时,我无法保存数据。

目前我有一个可变的字符串数组,当应用程序加载此数组时,它会在 uicollection 视图中加载,保存并正常加载。

然后我有一个可变 UIView 数组的可变数组。

(FIRST Mutable ARRAY --> Second Mutable Array 1, Second Array 2 etc --> UIView 1, UIView 2 etc)

这是不会保存的。

是否可以保存 UIView 的可变数组?

我不确定我是否以最好的方式措辞,但我希望你能理解。

如果需要,我可以发布代码,但我以本教程为基础

http://mobileorchard.com/how-to-make-an-iphone-app-part-6-saving-data/

感谢任何帮助。

【问题讨论】:

你是否继承了 UIViews? UIView本身符合NSCoding所以应该没有问题。 关于“不会保存”意味着什么的更多信息?错误信息?空的文件?内容不好? 【参考方案1】:

如果您使用自定义类,则需要确保它实现NSCoding 协议才能将其保存到磁盘。

要保存和加载它,您需要使用NSKeyedArchiverNSKeyedUnarchiver

// SAVE
[NSKeyedArchiver archiveRootObject: myArray toFile: myFilePath]

// LOAD
NSMutableArray *myArray = [NSKeyedUnarchiver unarchiveObjectWithFile: myFilePath];

常规的writeToFile:atomically:writeToURL:atomically: 方法只允许您编写属性列表对象。如果数组中有任何非属性列表对象,它们就会失败。属性列表对象为:NSArrayNSDictionaryNSStringNSDataNSDateNSNumber

【讨论】:

非常感谢您的帮助。这立即奏效,解决了我所有的问题。【参考方案2】:

UIViewsNSArrayNSStringsNSArray 应该没有区别。它们都是 Obj-C 对象,除了性能(NSString 的占用空间与可能包含其他对象的 UIView 相比非常小),NSArray 在两种情况下的行为都是相同的。

如果您需要进一步的帮助,您需要发布代码。

【讨论】:

【参考方案3】:

这听起来可能很傻,但是您分配了NSMutableArray 吗?

我已经忘记了几次,而且很容易忘记。

【讨论】:

以上是关于iOS将UIViews数组保存到文件然后重新加载的主要内容,如果未能解决你的问题,请参考以下文章

iOS 编程中心组的 UIViews

如何在 iOS 4 中从 UIViews 加载 nib?

Swift - 如何将点击手势添加到 UIViews 数组?

是否可以将 File 对象保存在 LocalStorage 中,然后当用户返回页面时通过 FileReader 重新加载文件?

需要将表格视图的内容保存为 txt 文件并稍后重新加载

将数组保存到 JSON 文件,然后使用 Array.push() 将数据保存在其中