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