一旦你的個人Thread對象,你只需要做的消息的對象排序,並採取最上面的Message對象。
最簡單的解決辦法是在Thread類像這樣來創建一個方法:
- (Messages *) lastUpdatedMessage{
NSSortDescriptor *sort=[NSSortDescriptor sortDescriptorWithKey:@"lastUpdated" ascending:NO];
NSArray *sortedMessages=[self.messagesInThread sortedArrayUsingDescriptors:[NSArray arrayWithObject:sort]];
return [sortedMessages objectAtIndex:0];
}
然後,所有你需要做的就是要求其lastUpdatedMessage每個Thread對象。
一個更復雜的,但更有效的解決方案是創建將一個消息對象鏈接到一個線程對象並作爲消息對象更新設置鏈接對象的中間聯的實體。所以:
MessageThreadLink{
message<--(required)-->Message.lastUpdateLink
thread<--(required)-->Thread.lastUpdatedMessage
}
每當一個Message對象更新時,它會告訴它相關的線程對象,刪除現有的鏈接對象然後再創建一個指向它。您可能會將該代碼放入lastUpdated屬性的自定義設置器中。
使用此方法,您只需要向每個線程詢問其lastUpdatedMessage,並且它會自動顯示,而無需進行大量搜索和排序。
我一直有意在我的應用程序中做這樣的事情,但**不知何故**保持忘記張貼在這裏問。 – BoltClock 2010-12-01 09:59:05
是的,通常情況下我只是比較線程ID,但是這個項目很大程度上依賴於核心數據,所以我認爲我會努力學習如何使它高效並學習關係等方面的一切。儘管如此,無法找到關於核心數據的許多信息。 :( – 2010-12-01 10:02:25