我正在建立一個open-source clone of iPhone's native Messages app called AcaniChat on GitHub。核心數據:按關係的屬性排序
我有一個Conversation
實體和一個Message
實體與sentDate
屬性。每個Conversation
可以有許多Message
s。我怎麼取Conversation
s最古老的Message
的sentDate
排序?
我正在建立一個open-source clone of iPhone's native Messages app called AcaniChat on GitHub。核心數據:按關係的屬性排序
我有一個Conversation
實體和一個Message
實體與sentDate
屬性。每個Conversation
可以有許多Message
s。我怎麼取Conversation
s最古老的Message
的sentDate
排序?
我能想到這樣做的最好的辦法是通過添加一個屬性到Conversation
實體,稱爲lastMessageSentDate
和每一個Message
進來,被添加到一個Conversation
時間,設置該對話的lastMessageSentDate
到該消息的sentDate
。我也可能想要爲Conversation
實體添加一個名爲lastMessageText
的屬性,因爲我想在ConversationsViewController
上顯示對話最後一條消息的文本(就像本機iPhone消息應用程序一樣),並且這樣做會讓我不必爲Message
做另一個核心數據提取。
其實,我只是有個主意!根據Xcode Documentation: Key-Value Coding Programming Guide: Collection Operators,我可以按[email protected]
排序Conversation
s。
您的第一個想法可能更有效,因爲它消除了每個Conversation.messages集合每次計算最大日期的需要當你獲取對話! – octy 2011-06-13 16:11:02
或只在'Conversation'中有'lastMessage'而不是'lastMessageSentDate'和'lastMessageText' :) – 2012-04-16 11:02:52
@MattDiPasquale我試過了你的想法。它沒有工作。看到相關的問題:http://stackoverflow.com/questions/12748852/how-to-sort-core-data-results-based-on-an-attribute-of-related-object-collection – Jaanus 2012-10-05 15:32:59
我在這裏發佈了一個類似的解決方案:http://stackoverflow.com/a/11550855/306764 – 2012-07-18 21:48:18