CoreData模型中Entity關係未新增反向連結導致奇怪問題
阿新 • • 發佈:2019-01-02
近日發現專案中無法儲存變化到CoreData資料庫中,檢查發現問題出現在如下一個沒有反向連結的的關係中:
可以看到favoriteHabits到Habit的關係,並沒有反向連結.
我先把問題的現象說一下:
- 未加入favoriteHabits中的Habit在App儲存資料庫前,可以任意加入或從favoriteHabits中刪除
- 一旦Habit儲存進入favoriteHabits,且App重啟後,再也無法將其從favoriteHabits中刪除!
刪除的程式碼如下:
func removeFavHabit(_ habit:Habit){ global.removeFromFavoriteHabits(habit) //Line 1 self.save() //Line 2 }
實際執行時在#1行執行後,可以看到favoriteHabits中物件數量已減1.但#2行執行後,favoriteHabits數量又恢復原樣,即無法被刪除.
奇怪之處有2:
- 以上問題對於未新增到favoriteHabits的Habit物件無此問題!
- 新建CoreData測試專案對於未有反向連結關係的刪除時,無此情況!
解決辦法是,為其新增反向連結.
但從我專案的資料邏輯性來說,的確無此必要新增該反向連結…
如果有過此問題的朋友,可以討論一二