自定义类型的核心数据属性问题

时间:2019-02-27 15:41:16

标签: ios swift core-data

我希望在名为Room的实体中拥有一个实体Person的数组(基本上,我想要Room中具有自定义类型Person的属性),但是在进行room.persons = currentRoomPersons时应用程序被阻止,发生SIGARBT错误,当前代码如下(Github code):

Room + CoreDataClass.swift:

import Foundation
import CoreData

@objc(Room)
public class Room: NSManagedObject {}

Room + CoreDataProperties.swift:

import Foundation
import CoreData
extension Room {
    @nonobjc public class func fetchRequest() -> NSFetchRequest<Room> {
        return NSFetchRequest<Room>(entityName: "Room")
    }

    @NSManaged public var persons: [Person]? // Array of entity "Person" in the room.
}

SIGARBT如下所示: Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Room setPersons:]: unrecognized selector sent to instance 0x600001d1eee0'

您可以用来独自运行该项目,或检查所有代码是否已上传到Github

我在做什么错了?

谢谢。

1 个答案:

答案 0 :(得分:0)

实体必须通过 Relationships 相互连接,而不是被声明为 Attribute

请阅读Defining Attributes and Relationships in Core Data Programming Guide部分

To-Many关系的类型默认为NSSet?。强烈建议您将类型更改为非可选本机Set<Person>