【问题标题】:Store NSArray of NSNumber* as NSString in Core Data将 NSNumber* 的 NSArray 存储为 Core Data 中的 NSString
【发布时间】:2014-02-27 09:58:59
【问题描述】:

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

我从这个答案中得到了这样做的想法:Store NSArray In Core Data Sample Code?

【问题讨论】:

  • 为什么要将数组存储在单个字段中?

标签: ios core-data


【解决方案1】:

您可以将您的数字保存为 NSString 分隔,并在使用此代码从此 NSString 获取和数组之后。

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

【讨论】:

    【解决方案2】:

    要将数字数组存储为单个属性,您可以简单地定义属性 键入 “可转换”。然后你可以将数组分配给属性, 例如

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

    Core Data 访问器方法将自动翻译 数组到存储在 SQLite 文件中的一些数据块,并将其转换回来 当您阅读该属性时。

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

    【讨论】:

      猜你喜欢
      • 2015-09-11
      • 1970-01-01
      • 1970-01-01
      • 2011-05-31
      • 1970-01-01
      • 2016-02-24
      • 1970-01-01
      • 2015-07-24
      • 2011-09-05
      相关资源
      最近更新 更多