2016-01-28 100 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,看看是否解決了錯誤。

相關問題