我使用swift 4 for macOS。 我将核心数据与两个实体一起使用:
NSManagedObject人
import CoreData
@objc(Person)
public class Person: NSManagedObject {
@NSManaged public var firstName: String!
@NSManaged public var books: NSSet
}
NSManagedObject Book
import CoreData
@objc(Book)
public class Book: NSManagedObject {
@NSManaged public var bookName: String!
@NSManaged public var date: DateString!
@NSManaged public var person: Person?
}
使用此代码我创建一个新人记录:
let entity = NSEntityDescription.entity(forEntityName: "Person", in: context)
let newPerson = NSManagedObject(entity: entity!, insertInto: context) as! Person
newPerson.firstName = "Max"
do {
try context.save()
} catch {print(error)}
现在我想直接在Book中创建一条新记录,如果我创建一个新人记录=> bookName =“Test”,date = Date()
这可能与我使用的代码newPerson.books = ?
有关
或者我使用相同的代码“新人记录”(稍加修改)来创建图书记录?
答案 0 :(得分:0)
您无法自动创建新的Book
。您需要具有创建实例的代码。你有几个选择:
Person
时,请使用创建Book
。awakeFromInsert
课程上的Person
。在您的覆盖中,添加代码以创建新的Book
。现在,您可以使用当前代码创建新的Person
,并且每个新Person
在您首次创建时都会创建新的Book
。