如何存储和检索sqlite数据库中的NSArray对象在目标c

问题描述:

我想存储&检索sqlite数据库的单列中的NSArray对象。 有谁知道我可以做到这一点?如何存储和检索sqlite数据库中的NSArray对象在目标c

+0

可以显示一些示例 –

+0

级: { “gradeId”:123, “gradeName”: “ABC” }, { “ gradeId“:222, ”gradeName“:”xyz“ } ] –

实现此目的的最简单方法是将数组转换为JSON字符串并将该字符串存储在数据库中,并在获取数据时将JSON字符串再次转换为数组。

阵列以JSON

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:arrayObject options:NSJSONWritingPrettyPrinted error:nil] 
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]); 

JSON数组

NSData *data = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; 
NSArray *arrayObject = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil]; 
+0

谢谢你的回答对我有用。 –

+0

https://github.com/jmbarnardgh/labqlite和https://github.com/jmbarnardgh/labqlite_model_generator可能能够帮助你的SQLite部分 –

+0

我也使用库https://github.com/ccgus/fmdb和https://github.com/nerdyc/FMDBHelpers与SQLite数据库文件进行交互,并且我有一个包含所需模型的CRUD操作功能的类。这些也是有帮助的。 –

这是很多的方式来做到这一点。其中的一个简单的方法是使用组件的JoinedByString方法。

NSArray* someArray = @[.....]; 
NSString* result = [someArray componentsJoinedByString:@"<some separator>"]; 

而且可以的NSKeyedArchiver

NSArray* someArray = @[.....]; 
NSData* dataToSave = [NSKeyedArchiver archivedDataWithRootObject:someArray]; 

但你将提供在阵列对象,确认到NSCoding协议。

您也可以使用JSON序列:

NSArray* someArray = @[.....]; 
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:someArray options:NSJSONWritingPrettyPrinted error:nil]