【发布时间】:2012-05-24 16:35:11
【问题描述】:
除了NSUserDefaults 还有什么其他方法可以保存和取回自定义对象?对我来说,NSUserDefaults 太麻烦了(它没有正确保存),所以我正在寻找另一种方法来保存有效的数据。 (我已经把我的问题贴出来了,我真的只是想寻找其他方法来保存数据)
编辑:我还需要能够保存 UIIMages 和 UIButtons 之类的东西。
【问题讨论】:
标签: ios nsuserdefaults
除了NSUserDefaults 还有什么其他方法可以保存和取回自定义对象?对我来说,NSUserDefaults 太麻烦了(它没有正确保存),所以我正在寻找另一种方法来保存有效的数据。 (我已经把我的问题贴出来了,我真的只是想寻找其他方法来保存数据)
编辑:我还需要能够保存 UIIMages 和 UIButtons 之类的东西。
【问题讨论】:
标签: ios nsuserdefaults
要存储自定义对象,您需要确保您的自定义对象实现了 NSCoding 协议。这是 Apple 在NSCoding. 上的文档。如果您需要有关如何实现 NSCoding 协议的教程,请查看 this site. 将 UIImage 保存到文件中,您可以将图像转换为 NSData 然后使用 NSData 的 writeToFile 方法写入文件。关于如何在 SO 上做最后一部分的例子很多。这里是one.
【讨论】:
应该通过创建一个 PNG 或 JPEG 表示来保存 UIImage,然后按照您认为合适的方式写入该 NSData 块。见UIImagePNGRepresentation。
UIButtons 应该使用NSCoding 协议进行序列化/反序列化。档案可以为您解决这个问题。
NSData 和 UIButtons 都支持 NSCoding,所以我建议存档而不是 NSUserDefaults。关于那个兔子洞的开始,请参阅 NSCoding。
【讨论】:
您可以使用 plist 或 coreData。由于您使用 NSUserDefaults ,这意味着数据非常小,因此 plist 将是一个好主意。两者都是苹果的非常高效。如果数据变得非常大,您可以使用 sqlite。
【讨论】:
text 文件或plist 文件。SQLLite来保存数据。除此之外,如果您使用的是服务器驱动的应用程序,那么您可以将数据保存在服务器上,并在需要时取回。
【讨论】: