Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.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结构?_Ios_Swift_Core Data_Struct - Fatal编程技术网

如何在iOS上的核心数据中存储Swift结构?

如何在iOS上的核心数据中存储Swift结构?,ios,swift,core-data,struct,Ios,Swift,Core Data,Struct,目前,我正在将我的一个类存储为plist中的NSData,显然这不是一个好方法 所以我试图设置核心数据,但我的类有结构。这就是我所拥有的: import Foundation import CoreData class Favourite: NSManagedObject { @NSManaged var origin: Stop struct Stop { var name: String; var id: String; } }

目前,我正在将我的一个类存储为plist中的NSData,显然这不是一个好方法

所以我试图设置核心数据,但我的类有结构。这就是我所拥有的:

import Foundation
import CoreData

class Favourite: NSManagedObject {
    @NSManaged var origin: Stop

    struct Stop {
        var name: String;
        var id: String;
    }
}
但这不好,因为它说

属性无法标记为@NSManaged,因为其类型无法在Objective-C中表示

此外,如果这个错误没有发生,我不知道我在xcdatamodeld文件中设置了什么


我想我可以将值存储在结构中,并在初始化对象时赋值?这是最理想的/干净的方式吗?

我将这样做:

import Foundation
import CoreData

    struct Stop {
       var name: String;
       var id: String;
    }

    class Favourite: NSManagedObject {

        @NSManaged var name: String
        @NSManaged var id: String

        var stop : Stop {
           get {
                return Stop(name: self.name, id: self.id)
            }
            set {
                self.name = newValue.name
                self.id = newValue.id
            }
         }
    }

非常有趣的文章,您应该阅读:

考虑重新设计您的模型,将结构转换为核心数据实体。这是我希望避免做的事情,因为我有一些这样的结构,但这似乎是我最终必须做的事情。感谢另一种选择是使
停止
符合
NSCoding
,但即使可以在普通的Swift结构上完成,这也或多或少是相同的事情。@TomHarrington您能举个例子吗