我希望在名为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。
我在做什么错了?
谢谢。
答案 0 :(得分:0)
实体必须通过 Relationships 相互连接,而不是被声明为 Attribute 。
请阅读Defining Attributes and Relationships in Core Data Programming Guide部分
To-Many
关系的类型默认为NSSet?
。强烈建议您将类型更改为非可选本机Set<Person>