2016-01-28 98 views
2

我试图将自定义类保存为核心数据对象的属性。将自定义对象保存为核心数据属性

核心数据对象:

@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 
} 
} 

所以我能做些什么来祈祷类通过核心数据对象来保存它?我需要也可以在代码的其他地方使用祷告类的实例。

回答

3

如前所述,有你的祈祷类的子类NSObject的,符合NSCoding这需要两个方法:-initWithCoder:encodeWithCoder:

一旦这些都实现,你可以使用NSKeyedArchiver/NSKeyedUnarchiver类方法来你的对象转化为NSData的对象和背部,从而允许您将对象存储为支持的NSData类型下的CoreData属性。

+0

谢谢!这对我有用! – DaniSmithProductions

0

让类祷告符合NSObject和NSCoding,看看是否解决了错误。

相关问题