我有一个NSMutableArray
,其中包含NSMutableDictionary
&#39}。每个字典都有AVAsset
,NSURL
,NSString
和两个UIImages
。我想将我的数组保存到磁盘,以便每次关闭并打开我的应用程序时,我都可以加载数组并将URL转换为NSData
个对象以播放音频并使用{{1对于其他一些动作。我知道我可以使用AVAssets
和initWithContentsOfFile
保存并加载我的数组,这个答案非常有用:Saving a NSArray。但是,答案是从2009年开始的。这些天有更好的方法来保存和加载阵列吗?
答案 0 :(得分:0)
至于您链接的答案,答案仍然有效。根据它,你不能以它提到的方式存储它。这是因为数组必须是plist格式兼容才能像这样保存。将数组解析为最低元素层次结构时,UIImage
只是一个对象指针而且没有意义。
一种实用的方法是将UIImages
存储为单独的文件,并将其路径存储为NSMutableDictionary
对象的一部分。 AVAssets也是如此。当然,您需要设计解决方案才能完全实现这一目标。
存储非兼容对象的另一种方法是使用归档和取消归档功能。请参阅documentation。在这里,确保树中的每个对象都遵循协议NSCoding
(可能你问题中的AVAsset不符合它,所以你需要一种方法来解决它)。例如,请参阅this answer并搜索相似内容。