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
协议才能将其保存到磁盘。
要保存和加载它,您需要使用NSKeyedArchiver
和NSKeyedUnarchiver
。
// SAVE
[NSKeyedArchiver archiveRootObject: myArray toFile: myFilePath]
// LOAD
NSMutableArray *myArray = [NSKeyedUnarchiver unarchiveObjectWithFile: myFilePath];
常规的writeToFile:atomically:
和writeToURL:atomically:
方法只允许您编写属性列表对象。如果数组中有任何非属性列表对象,它们就会失败。属性列表对象为:NSArray
、NSDictionary
、NSString
、NSData
、NSDate
和 NSNumber
。
【讨论】:
非常感谢您的帮助。这立即奏效,解决了我所有的问题。【参考方案2】:UIViews
的 NSArray
与 NSStrings
的 NSArray
应该没有区别。它们都是 Obj-C 对象,除了性能(NSString
的占用空间与可能包含其他对象的 UIView
相比非常小),NSArray
在两种情况下的行为都是相同的。
如果您需要进一步的帮助,您需要发布代码。
【讨论】:
【参考方案3】:这听起来可能很傻,但是您分配了NSMutableArray
吗?
我已经忘记了几次,而且很容易忘记。
【讨论】:
以上是关于iOS将UIViews数组保存到文件然后重新加载的主要内容,如果未能解决你的问题,请参考以下文章
Swift - 如何将点击手势添加到 UIViews 数组?
是否可以将 File 对象保存在 LocalStorage 中,然后当用户返回页面时通过 FileReader 重新加载文件?