ios - 自定义类型的 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。
我究竟做错了什么?
谢谢。
解决方案
实体必须通过关系相互连接,而不是被声明为Attribute。
To-Many
默认情况下,关系的类型是NSSet?
。强烈建议您将类型更改为非可选本机Set<Person>
推荐阅读
- c# - Google API 身份验证服务器端
- python - 删除列表列表中的所有重复项(不包括原始项)
- postgresql - 在发布前批准对实体的修改
- database - SQLite 使用来自不同表的数据查找股票数量
- javascript - 使用redux,如何避免在进行新的API调用之前渲染旧的状态数据?
- spring-boot - 使用 Broadleaf 进行 Spring 社交登录
- typescript - 为什么 Typescript 不将对象键缩小为字符串
- php - Codeigniter 在单个语句中调用多个函数
- nativescript - 每次添加新屏幕时,Nativescript 应用程序的大小都会增加
- mysql - 如何确保首先评估 WHERE 中的子查询?