保存 NSMutableArray 以在重新打开 iPhone 应用程序时加载
我有一个 NSMutableArray,该数组中的每个项目都是不同的类。每个类都有许多字段,例如 CPPlot、标识符等(我正在使用 CorePlot 开发股票应用程序)。现在我想存储这个 NSMutableArray 以在用户重新打开应用程序时加载,这将加载他们之前使用的所有图表。
我试图弄清楚如何在 Stackoverflow 中做到这一点。我发现有两种解决方案:
NSUserDefaults
SQLite 数据库
在 NSUserDefaults 中,当我想存储 NSMutableArray 时,我必须使用 NSKeyedArchiver 来实现归档和取消归档数组对象,并对数组对象中的每个项目执行 NSCoding 协议。但我不能这样做,因为在每个项目中,它都有一些来自 CorePlot 库的字段,所以我不能对这些字段使用 NSCoding。
SQLite 数据库,我无法使用此解决方案,因为数组对象中的每个项目都是不同的类。
我想问一下还有什么其他办法可以解决这个问题吗?
我希望我的话足够清楚,能够理解。
谢谢
I have a NSMutableArray, each item in this array is different class. In each class has many field such as CPPlot, identifier,... (I am using CorePlot to develop a stock application). Now I would like to store this NSMutableArray to load when user reopen application, this will load all the chart they used before.
I try to figure out how to do that in Stackoverflow. And I found out there were 2 solutions:
NSUserDefaults
SQLite database
In NSUserDefaults, when I want to store NSMutableArray, I must implement with NSKeyedArchiver to archive and unarchive array object, also do NSCoding protocol for each item in array object. But I can not do this solution because in each item, it has some fields from CorePlot library, so that I can not use NSCoding to these fields.
SQLite database, I can not use this solution because each item in array object is different class.
I would like to ask if any other solution to solve this problem?
I hope my words are clear enough to understand.
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我建议您弄清楚 CorePlot 对象的根部是什么类型的数据。如果它是整数,则只需将它们存储在 NSUserDefaults 中,然后在重新打开应用程序时重建 NSMutableArray 即可。另一种选择是将项目存储在单独的 plist 文件中。
I would suggest you figure out what kind of data is at the root of your CorePlot objects. If it is integers, then simply store them in NSUserDefaults, and then simply rebuild your NSMutableArray on re-opening the app. Another option is to store your items in a separate plist file.
使用此方法保存:
Use this method to save: