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

问题描述 投票:0回答:1

我想在一个名为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

我究竟做错了什么?

谢谢。

ios swift core-data
1个回答
0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.