Ios 使用核心数据Swift 3保存阵列?
我正在尝试将核心数据中的数组保存为属性。所有图像将被分配到一个[字符串]。我见过一些人说要让它变为可改变的。将其保存到核心数据的正确解决方案是什么? 如何获取对它们的引用,以便将可转换文件更改为Ios 使用核心数据Swift 3保存阵列?,ios,swift,core-data,Ios,Swift,Core Data,我正在尝试将核心数据中的数组保存为属性。所有图像将被分配到一个[字符串]。我见过一些人说要让它变为可改变的。将其保存到核心数据的正确解决方案是什么? 如何获取对它们的引用,以便将可转换文件更改为[String] 这实际上是一个很好的观点,因为假设您正在创建自己的NSManagedObject子类 值得强调的是,自己创建/维护自己的NSManagedObject子类是一个非常有效的选项,有些人甚至认为这是一个首选选项,因为如果您的项目位于存储库中,您可以更好地了解任何更改 然而,在上两个核心数据
[String]
这实际上是一个很好的观点,因为假设您正在创建自己的NSManagedObject子类
值得强调的是,自己创建/维护自己的NSManagedObject子类是一个非常有效的选项,有些人甚至认为这是一个首选选项,因为如果您的项目位于存储库中,您可以更好地了解任何更改
然而,在上两个核心数据项目中,我一直在使用Xcode创建子类,这意味着您需要在扩展中创建另一个属性
以下是我一直使用的一般方法:
首先,在您的模型文件中,我使用属性所表示的对象类型命名属性,在本例中为数组:
然后创建一个扩展并添加一个计算属性,该属性在NSArray
和SwiftArray
类型之间转换:
extension CoreDataArrayObj {
var images: [String] {
get {
return imagesArray as? Array<String> ?? []
}
set {
imagesArray = newValue as NSArray
}
}
}
扩展CoreDataArrayObj{
变量图像:[字符串]{
得到{
返回图像数组为?数组???[]
}
设置{
imagesArray=作为NSArray的新值
}
}
}
我刚刚回答了,当我发现有人已经在这里做了更好的回答时,我将其删除:这个示例存储了一个Double
数组,但同样的方法也适用于String
.Ya,这非常有帮助。我看到了,想知道swift 3是否有什么变化。同样,这可能是一个愚蠢的问题,但现在既然NSObject是由Xcode管理的,那么如何获取对它们的引用,以便我可以将可转换为[string]而不是一个愚蠢的问题!由answer取消删除并编辑,并附上有关此内容的注释。我将\n \n插入数组中的每个不同字符串之间。它是否与从数组转换到NsArray、核心数据或其他内容有关?否-数组中的字符不应转换,因此不会有\n
或任何其他意外字符,除非您将它们添加到某个位置!您将扩展名放在哪个文件中?这一点我有点困惑。