1. 程式人生 > >CoreData模型中Entity關係未新增反向連結導致奇怪問題

CoreData模型中Entity關係未新增反向連結導致奇怪問題

近日發現專案中無法儲存變化到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:

  1. 以上問題對於未新增到favoriteHabits的Habit物件無此問題!
  2. 新建CoreData測試專案對於未有反向連結關係的刪除時,無此情況!

解決辦法是,為其新增反向連結.

但從我專案的資料邏輯性來說,的確無此必要新增該反向連結…

如果有過此問題的朋友,可以討論一二