当我将关系从one-to-one
更改为one-to-many
以获取以下关系时,我收到以下错误消息
eventSch?.setValue(eventDesc, forKey: "eventDec")
eventDesc.setValue(eventSch, forKey: "eventSchedule")
***由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'不可接受的值类型为 to-many relationship:property =“eventDec”;期望的类型= NSSet; 给定type = EventDec; value =(实体: EventDec; id:0x60800022bcc0 ; 数据:{ eventSchedule = nil; eventStatus = 0; })'
如何摆脱此错误?
答案 0 :(得分:2)
这:eventSch?.setValue(eventDesc, forKey: "eventDec")
导致错误,因为您正在提供实体;相反,你应该提供一个NSSet。
我不熟悉Objective-C;但是,您的代码应该与此类似:
NSMutableSet* eventDescSet = [NSMutableSet set];
[eventDescSet addObject: eventDesc]; // you have your set with one item
eventSch?.setValue(eventDescSet, forKey: "eventDec")
另外,为了清晰起见,我会使用更具描述性的名称。
答案 1 :(得分:1)
您的设备上有一个基于旧版本的SQL文件,因此当应用尝试根据新模型加载它时,它无法弄清楚如何阅读它。
[硬解决方案] 如果您已经在appstore上发布了应用程序,那么您应该将模型回滚到发布时的模型,然后根据更改创建新模型
[简易解决方案] 如果您是该应用的唯一使用者,并且您仍在开发中,则没有理由制作模型版本。只需从手机(和/或模拟器)中删除并重新安装即可。基于旧版本的SQL文件将不复存在。