我有一个NSMutableArray
,其中包含NSMutableDictionary
's。每个字典有一个AVAsset
,一个NSURL
,NSString
,和两个UIImages
。我想将阵列保存到磁盘,以便每次关闭并打开我的应用程序时,我都可以加载阵列并将URL转换为NSData
对象以播放音频并使用AVAssets
进行其他操作。我知道我可以使用initWithContentsOfFile
和writeToFile:atomically
保存和加载我的阵列,这个答案非常有用:Saving a NSArray。但是,这个答案是从2009年开始的。现在是否有更好的方式来保存和加载数组?将NSArray数据保存到磁盘
回答
至于你链接的答案,答案仍然有效。根据它,你不能按照它提到的方式来存储它。这是因为数组必须是plist格式兼容才能保存。当你将数组解析到最低的元素层次时,你只有一个对象指针,并且没有意义。
一种实用的方法是将UIImages
作为单独的文件存储,并将其路径存储为您的NSMutableDictionary
对象的一部分。对于AVAssets也是如此。当然,您需要设计解决方案以完全实现此目标。
另一种存储非plist兼容对象的方法是使用存档和取消存档功能。请参阅documentation。在这里,请确保树中的每个对象遵循协议NSCoding
(可能您的问题中的AVAsset不符合协议,所以您需要一种解决此问题的方法)。有关示例,请参阅this answer并搜索它的类似内容。
通过将'UIImages'和'AVAssets'作为单独的文件保存是什么意思? – Brosef
不要将它们存储在内存中将它们存储到磁盘并将其路径存储在字典中。稍后从磁盘中检索它们。 –
- 1. 将空NSArray保存到磁盘
- 2. 将可变数据保存到磁盘
- 3. 将trie保存到磁盘
- 4. 将nsdate保存到磁盘
- 5. 将DynamicMethod保存到磁盘
- 6. 脚本varbinary数据保存到磁盘
- 7. RenderTargetBitmap保存原始数据到磁盘
- 8. 如何将对象数据源数据保存到磁盘?
- 9. 将PNG保存到磁盘,但将文件路径保存到核心数据
- 10. 将内存中的H2数据库保存到磁盘
- 11. 将内存数据库保存到磁盘
- 12. 最佳核心数据保存策略(何时将数据保存到磁盘)
- 13. 如何将IFormFile保存到磁盘?
- 14. 将值保存到磁盘XCode
- 15. 将TransformedBitmap对象保存到磁盘。
- 16. 将img/image的HTML保存到磁盘
- 17. Jasper Reports将PDF保存到磁盘
- 18. Office API,将邮件保存到磁盘
- 19. UWP将zip文件保存到磁盘
- 20. 提示将文件保存到磁盘
- 21. 将Outlook附件保存到磁盘
- 22. 将测试日志保存到磁盘?
- 23. 如何将图像保存到磁盘
- 24. 用WinJS将图像保存到磁盘
- 25. 如何将ImageCache保存到磁盘中?
- 26. 将PDF保存到本地磁盘C#
- 27. PHP将zip保存到磁盘
- 28. 将阵列保存到磁盘
- 29. MySql不保存到磁盘
- 30. Mongoengine FileField保存到磁盘?
'writeToFile'不适用于'AVAsset'和'UIImage'对象。阅读该方法的文档。 – rmaddy