将自定义对象保存为核心数据属性
问题描述:
我试图将自定义类保存为核心数据对象的属性。将自定义对象保存为核心数据属性
核心数据对象:
@objc(Safer)
class Safer: NSObject
{
@NSManaged var perakimFiles: [prayer]? //This line gives me an error saying that it cannot save a type that is not Obj. C
@NSManaged var titleEnglish: String?
@NSManaged var titleHebrew: String?
@NSManaged var parshaPerakim: [Int]?
@NSManaged var saferCode: String?
var titles: [[String]]
{
get
{
var ret = [[String]]()
var i = 0
for file in perakimFiles!
{
ret.append([file.title, "\(i+1)"])
i++
}
return ret
}
}
init(_ _saferCode: SefarimCodes)
{
super.init()
self.saferCode = _saferCode.rawValue
}
init(_perakimFiles: [prayer], _titleEnglish: String, _titleHebrew: String)
{
super.init()
self.perakimFiles = _perakimFiles
self.titleEnglish = _titleEnglish
self.titleHebrew = _titleHebrew
}
init(_perakimFiles: [prayer], _titleEnglish: String, _titleHebrew: String, _parshaPerakim: [Int])
{
super.init()
self.perakimFiles = _perakimFiles
self.titleEnglish = _titleEnglish
self.titleHebrew = _titleHebrew
self.parshaPerakim = _parshaPerakim
self.saferCode = setTorahSaferCode()!.rawValue
let config = self.configFromCode()
self.perakimFiles = config.perakimFiles
}
}
这里是我试图在核心数据对象保存祈祷类:
class prayer
{
var url: NSURL
var title: String
var detail: String?
init(initURL: NSURL, initTitle: String)
{
print("1")
print("2")
self.title = initTitle
print("3")
self.url = initURL
print("4")
}
init(initURL: NSURL, initTitle: String, initDetail: String)
{
self.url = initURL
self.title = initTitle
self.detail = initTitle
}
}
所以我能做些什么来祈祷类通过核心数据对象来保存它?我需要也可以在代码的其他地方使用祷告类的实例。
答
如前所述,有你的祈祷类的子类NSObject的,符合NSCoding这需要两个方法:-initWithCoder:
和encodeWithCoder:
一旦这些都实现,你可以使用NSKeyedArchiver/NSKeyedUnarchiver
类方法来你的对象转化为NSData的对象和背部,从而允许您将对象存储为支持的NSData类型下的CoreData属性。
答
让类祷告符合NSObject和NSCoding,看看是否解决了错误。
谢谢!这对我有用! – DaniSmithProductions