신속한 핵심 데이터에 저장하는 두 개의 개체가 있습니다. 목록은 하나의 객체이고 Item은 다른 객체입니다. 여기 Swift의 NSManagedObject 및 NSCoding을 따르는 간단한 개체를 얻는 방법
는 List 클래스의 :import Foundation
import CoreData
class List:NSManagedObject {
/* Remember, any @NSMananged variables added or changed here
needs to be reflected in Model */
@NSManaged var name:String
@NSManaged var items: [Item]
}
그리고 여기에 내가 Item 클래스의 만들어 놓은 난장판이다 : 나는 NSManagedObject, NSObject의 및 NSCoding 약 사과 설명서를 읽고
import Foundation
import CoreData
class Item:NSManagedObject, NSCoding {
/* Remember, any @NSMananged variables added or changed here
needs to be reflected in Model */
@NSManaged var title:String
@NSManaged var address:String
@NSManaged var notes:String
@NSManaged var quantity:Int32
func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeObject(title, forKey: "title")
aCoder.encodeObject(address, forKey: "add")
aCoder.encodeObject(notes, forKey: "notes")
aCoder.encodeInt32(quantity, forKey: "qty")
}
override init(entity: NSEntityDescription, insertIntoManagedObjectContext context: NSManagedObjectContext?) {
}
required init(coder aDecoder: NSCoder) {
title = aDecoder.decodeObjectForKey("title") as! String
address = aDecoder.decodeObjectForKey("add") as! String
notes = aDecoder.decodeObjectForKey("notes") as! String
quantity = aDecoder.decodeInt32ForKey("qty")
}
}
그것은 foriegn 언어 일 수 있습니다.
기능을 구현하지 않으면 NSCoding을 준수하지 않습니다. encodeWithCoder()를 구현하고 init()이 필요하면 NSCoding을 준수하지만 NSManagedObject와 일치하도록 다른 init (엔터티 ...)를 추가해야합니다. 이 기능으로 무엇을해야할지 모르겠습니다.
어떤 도움을 주셔서 감사합니다. 더 많은 정보가 필요하다면이 게시물을 편집 해 보겠습니다.
쓰기 얻으려면 왜 당신이 NSCoding''을 준수하기 위해 노력하고있다? – Wain
@Wain List 클래스의 [Item] 항목에 저장할 수 있도록 NSCoding을 준수해야한다는 인상하에있었습니다. 잘못인가? – Roclemir
예, 잘못되었습니다. 핵심 데이터 모델을 설정하여 목록에 항목과 다 대일 관계가있는 경우 모두 처리됩니다. – Paulw11