如何在iOS上的核心数据中存储Swift结构?
目前,我正在将我的一个类存储为plist中的NSData,显然这不是一个好方法 所以我试图设置核心数据,但我的类有结构。这就是我所拥有的:如何在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; } }
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您能举个例子吗