将NSMutableArray存储到sqlite数据库中

时间:2011-03-22 13:13:59

标签: iphone uitableview core-data nsmutablearray

喜 我正在写一个iPhone应用程序,需要一些帮助.. 我有这个uitableview显示包含在一个nsmutable数组中的数据..这个数据是通过一些操作检索的,因此每次数据量都不一样......

我想知道的是,如果我有类似的东西:

NSMutableArray * mArray;

我将如何从sqlite数据库中存储和加载'mArray'。

根据要求提供更多信息:

@Caleb

@westsider

数组内容: 数组的内容是简单的模块名称(即学生在课程中学习的主题),它是从.ics日历文件中检索到的,带有一些解析操作。我最终得到一个包含我想要的数据的数组然后我用tableview显示它..

基本上我需要先保存存储在数组中的模块名称,以便下次用户打开应用程序时,模块名称仍然存在..

为何选择核心数据 当用户在tableview中选择一个单元格(即选择一个模块)时,我想推送另一个显示模块名称的视图控制器,用户可以在其中添加应该保存的其他数据/字符串。

2 个答案:

答案 0 :(得分:2)

数组中的对象是什么?它们都是同一类型吗?如果他们是字典,他们都有相同的键吗?它们是由标准属性列表对象(NSDictionary,NSData,NSArray,NSString,NSNumber)组成的吗?为什么要使用SQLite数据库而不是以其他方式保存它们?

如果您有一组自定义对象,最简单的方法是在数组中使用的类(或类)中实现NSCoding。然后,使用-archiveRootObject创建一个NSKeyedArchiver并归档您的数组:toFile:。

答案 1 :(得分:1)

只要数组中的所有内容都符合NSCoding,您就可以序列化数组。 请查看Archives and Serialization Programming Guide以创建和解码档案。

您的sqlite表中需要一个数据类型为blob的列,并使用sqlite3_bind_blob来存储它。

此链接显示如何从对象创建存档。 http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Archiving/Articles/creating.html#//apple_ref/doc/uid/20000949-BABGBHCA

这篇文章展示了如何从sqlite数据库中检索blob。 retrive-nsdata-from-sqlite-stored-in-blob-data-type-for-iphone-app