簡體   English   中英

核心數據不允許我刪除沒有關系對象的對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM