Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用核心数据Swift 3保存阵列?_Ios_Swift_Core Data - Fatal编程技术网

Ios 使用核心数据Swift 3保存阵列?

Ios 使用核心数据Swift 3保存阵列?,ios,swift,core-data,Ios,Swift,Core Data,我正在尝试将核心数据中的数组保存为属性。所有图像将被分配到一个[字符串]。我见过一些人说要让它变为可改变的。将其保存到核心数据的正确解决方案是什么? 如何获取对它们的引用,以便将可转换文件更改为[String] 这实际上是一个很好的观点,因为假设您正在创建自己的NSManagedObject子类 值得强调的是,自己创建/维护自己的NSManagedObject子类是一个非常有效的选项,有些人甚至认为这是一个首选选项,因为如果您的项目位于存储库中,您可以更好地了解任何更改 然而,在上两个核心数据

我正在尝试将核心数据中的数组保存为属性。所有图像将被分配到一个[字符串]。我见过一些人说要让它变为可改变的。将其保存到核心数据的正确解决方案是什么?

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

这实际上是一个很好的观点,因为假设您正在创建自己的NSManagedObject子类

值得强调的是,自己创建/维护自己的NSManagedObject子类是一个非常有效的选项,有些人甚至认为这是一个首选选项,因为如果您的项目位于存储库中,您可以更好地了解任何更改

然而,在上两个核心数据项目中,我一直在使用Xcode创建子类,这意味着您需要在扩展中创建另一个属性

以下是我一直使用的一般方法:

首先,在您的模型文件中,我使用属性所表示的对象类型命名属性,在本例中为数组:

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

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
或任何其他意外字符,除非您将它们添加到某个位置!您将扩展名放在哪个文件中?这一点我有点困惑。