我认为sqlite3对于我的目的来说有点过于复杂。我有一个非常小的应用程序,只需要用户输入很少的内容。输入是浮点值,日期和整数。我会说,即使是一个核心用户也会使用该应用程序生成不超过10 kb的数据。
使用计算器示例可以很好地描述对象图。想象一下存储所有计算的计算器。什么都不酷/特别。对象图是这样的:一个NSMutableArray,它存储MyCalculationData对象的实例。每个MyCalculationData对象只存储最简单的东西:使用的数学运算(由一个以编程方式映射到某个东西的整数标识,即“减号”或“除法”),输入的值为CGFloat,一个时间戳(只是一个大的双倍,我认为)。
最后,整个NSMutableArray表示与该计算器的一个会话,用户可以随时重新打开它。它存储在另一个包含所有这些计算会话的NSMutableArray中。
从理论上讲,这与我的应用程序类似。
那么有什么选择?
sqlite3:太难以有效使用。真。这很难,比如试着吃20周龄的面包。
sqlite3 + FMDB:听起来确实不错。有一个Objective-c包装类来摆脱所有这些c>> objective-c>> c转换和限制。但是:没有找到文档。没有找到例子。没有教程。使用不多/讨论不多。
CoreData:可能在一年内,但现在不行。不要相信统计数据。不会这么快升级到3.0。
有没有人对这些NSFooBarSerialization之一有很好的经验?
答案 0 :(得分:4)
看看NSKeyedArchiver / Unarchiver。只要数组中的所有内容都符合NSCoding协议(NSStrings和NSNumbers已经完成),您就可以将数组保存到磁盘,如下所示:
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:myArray];
[data writeToFile:@"/a/path/to/myFile" atomically:YES];
您可以像这样加载它:
NSData *data = [NSData dataWithContentsOfFile:@"/a/path/to/myFile"];
NSArray *myArray = [NSKeyedUnarchiver unarchiveObjectWithData:data];
此方法简单易用,适用于您的简单应用程序。