将NSNumber的NSArray存储为Core Data中的NSString

时间:2014-02-27 09:59:00

标签: ios core-data

我需要有一个NSNumber *数组作为Core Data中实体的属性。我想我可以将它们存储为字符串,然后在我的DAL中我可以将它们全部视为NSNumber *的数组,但然后将数组解析为一个字符串,每个值之间有一个空格。我可以设置并获取“interval”作为NSNumber *的数组,但实际上将它们存储为字符串。这是一个坏主意吗??有更好的方法吗?

我想到了这个答案:Store NSArray In Core Data Sample Code?

2 个答案:

答案 0 :(得分:2)

您可以将您的数字保存为NSString,并使用此代码将此NSString中的get和数组分隔开来。

//Get your string of numbers from CoreData
NSString *stringNumbers = [[yourClassDAO instance] getNumbersString];
//Transform them in an array
NSArray *arraNumbers = [stringNumbers componentsSeparatedByString:@","];

答案 1 :(得分:2)

要将数字数组存储为单个属性,您只需定义属性即可 输入“Transformable”。然后你可以将数组分配给属性, 例如

NSArray *arrayOfNumbers = …;
object.numbers = arrayOfNumbers;

核心数据访问器方法将自动转换 将数组存储在SQLite文件中的某些数据blob中,然后将其转换回来 当你读到房产时。

一个缺点是您无法访问搜索谓词中的数组元素。如果你 需要那么你应该定义一个多对多的关系。