swift创建记录并将记录添加到关系中

时间:2017-09-04 10:24:17

标签: swift macos cocoa core-data

我使用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 = ?有关 或者我使用相同的代码“新人记录”(稍加修改)来创建图书记录?

1 个答案:

答案 0 :(得分:0)

您无法自动创建新的Book。您需要具有创建实例的代码。你有几个选择:

  1. 就像上面的代码一样。每次创建新的Person时,请使用创建Book
  2. 的代码进行操作
  3. 覆盖awakeFromInsert课程上的Person。在您的覆盖中,添加代码以创建新的Book。现在,您可以使用当前代码创建新的Person,并且每个新Person在您首次创建时都会创建新的Book