我正在通過圍繞OS X上的Core Data的學習項目工作。我在數據存儲中有一個實體(Foo),在UI中,我使用NSArrayController綁定將Foo對象的某些(名稱)字段放入NSTableView,用戶可以在其中添加/刪除/重命名(並可能重新排序)項目。使用核心數據/綁定建模用戶可訂購列表
如您所知,Core Data存儲是無序的。不過,我想從用戶的角度給它訂購。例如。向表視圖添加一個新行,將新的Foo修復到列表末尾,等等。如果表允許重新排序,則保持該順序。
我認爲我應該通過向Foo實體添加一些隱藏的(即用戶永遠不會遇到它)「序號」字段來實現這一點,這很好。我試圖弄清楚:
- 哪裏是正確的地方設置這個「序數」字段的新項目?現在,一個按鈕正在調用數組控制器上的
add:
動作,並且綁定以神奇方式處理所有其他動作。 (我需要訪問項目的數量才能正確設置。) - 哪裏有正確的位置來修正整個結果集的序號在刪除或重新排序?
- 假設存儲區中的所有對象都具有合理的序號屬性,那麼必須對UI連接執行什麼操作才能使表視圖顯示按該序號排序的結果?這是我可以純粹與綁定?我需要子類...什麼?
感覺這是一種常見的情況,這裏的人們可能有一個現成的答案。我是新來的核心數據和綁定 - 試圖摸索我的方式。不需要代碼;指向正確方向的指針會很棒。謝謝。
感謝您的詳細和周到的答案。有很多情況下用戶數據可以任意排序,例如,待辦事項列表等。鏈接列表的想法比保持序號聰明,脆弱。 – 2011-04-11 06:06:03
如果你想使用'NSFetchedResultsController',我看不出如何使用這個方法。我錯了嗎? – benzado 2011-07-15 16:31:51
您不能在FRC中使用鏈接列表。相反,您只需從頂層對象開始,向下走向關係。可能看起來很複雜,但相比之下,每次更改排序時更新數據庫中每個對象的序數屬性都不是。 – TechZen 2011-07-15 18:59:39