[英]Core Data won't let me delete an object with no relationship objects
对于核心数据应用程序,我有一个非常简单的数据模型。 基本上,我要列出电话中已有的联系人列表。 当用户点击联系人时,他们将被带到详细信息查看屏幕,他们可以在其中选择电话号码或电子邮件地址。 当他们选择任何详细信息时,我将通过Core Data进行存储。
我有一个实体叫做Contact
,另一个实体叫Contact_Detail
。
联系方式<----- >> Contact_Detail
与Contact_Detail的联系人关系具有删除规则“拒绝”。 与Contact的Contact_Detail关系的删除规则为“不执行”。
如果用户想删除某个先前选择的详细信息,则首先获取与该ID具有相同ID的Contact_Detail对象。 如果仅返回一个Contact_Detail对象,那么我知道我也需要从Contact实体中删除该联系人。 如果返回了多个Contact_Detail
对象, Contact_Detail
删除该特定对象。
一切正常,并且数据库正在按预期进行更新(删除了详细对象,并且删除了特定联系人的最后一个详细对象时,联系人也是如此),只要我在peoplePicker和peopleDetailViewController。
我遇到的问题是,当我选择一个电子邮件地址时,离开detailVC,离开peoplePicker,然后返回到peoplePicker,再回到同一联系人,然后取消选择我之前选择的电子邮件地址,Core Data就会抛出该错误。似乎无法删除我的Contact
的错误,因为仍然存在关系对象( Contact_Detail
):
NSValidationErrorKey=details, NSLocalizedDescription=The operation couldn’t be completed. (Cocoa error 1600.), NSValidationErrorValue=Relationship objects for {( (entity: Contact_Detail; id: 0xd21afe0 ; data: ) )} on 0x5d5a780}
我可以验证Contact_Detail
对象是否确实已被删除。 为什么无法删除联系人? 为什么只在特定的导航序列中发生这种情况?
让我知道是否应该发布一些代码。 我认为这个问题在引发第一个错误后继续使用Core Data之后会导致崩溃。
谢谢!
为什么不以这种方式设置删除规则?
Contact<--(cascade)-->>ContactDetail
//when Contact is removed, all details are removed too)
ContactDetail<<--(nullify)-->Contact
//when Contact Detail is removed, this particular detail is removed from Contact too
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.