【问题标题】:Saving an array with core data Swift 3?用核心数据 Swift 3 保存一个数组?
【发布时间】:2017-08-01 06:48:44
【问题描述】:

我正在尝试将 Core Data 中的数组保存为属性。 allImages 将被分配给一个 [String]。我看到有人说要让它变形。将其保存到核心数据中的正确解决方案是什么?

【问题讨论】:

  • 我刚刚回答,然后当我发现有人在这里回答做得更好时删除了:stackoverflow.com/questions/29825604/… 此示例存储Double 的数组,但同样的方法适用于String .
  • 你帮了很多忙。我看到了,想知道 swift 3 中是否有任何变化。这可能是一个愚蠢的问题,但现在由于 NSObjects 由 Xcode 管理,我如何获取对它们的引用,以便我可以将可转换变量更改为 [string]
  • 不是一个愚蠢的问题!未删除并由答案编辑,并附有关于此的注释。

标签: ios swift core-data


【解决方案1】:

如何获得对它们的引用,以便将可转换对象更改为 [String]

这实际上是一个好点,因为answer I linked too 假设您正在创建自己的 NSManagedObject 子类。

值得强调的是,自己创建/维护自己的 NSManagedObject 子类是一个完全有效的选择,有些人甚至可能建议这是一个首选选项,因为如果您的项目在存储库中,您可以更好地了解任何超时更改。

但是 - 我一直在使用 Xcode 创建子类的最后几个 Core Data 项目,这意味着您需要在扩展中创建另一个属性。

这是我一直在使用的一般方法:

首先,在你的模型文件中,我用它所代表的对象类型来命名属性,在本例中是一个数组:

然后创建一个扩展并添加一个在 NSArray 和 Swift Array 之间转换的计算属性:

extension CoreDataArrayObj {
    var images: [String] {
        get {
            return imagesArray as? Array<String> ?? []
        }
        set {
            imagesArray = newValue as NSArray
        }
    }
}

【讨论】:

  • 我在数组的每个不同字符串之间都得到了 \n \。它是否与从 Array 转换为 NsArray、核心数据事物或其他事物有关?
  • 不 - 数组中的字符不应该被转换,所以不会有 \n 或任何其他意外字符,除非你在某处添加它们!
  • 你把扩展名放在什么文件里?我在这方面有点困惑。
猜你喜欢
  • 2017-07-17
  • 1970-01-01
  • 1970-01-01
  • 2017-09-20
  • 1970-01-01
  • 1970-01-01
  • 2016-08-19
  • 2017-05-14
  • 1970-01-01
相关资源
最近更新 更多