首页 > 解决方案 > 自定义类型的 Core Data 属性问题

问题描述

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

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

我究竟做错了什么?

谢谢。

标签: iosswiftcore-data

解决方案


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

请阅读核心数据编程指南中的定义属性和关系部分

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


推荐阅读