これはよくある質問である必要があり、SO に関連する多くのものが見つかりましたが、これに対する解決策はありません。
これらの 2 つのコアデータ モデルがあります。
@class Message;
@interface Conversation : NSManagedObject
@property (nonatomic, retain) NSString * number;
@property (nonatomic, retain) NSSet *messages;
@property (nonatomic, retain) Message *lastMessage;
と
@class Conversation;
@interface Message : NSManagedObject
@property (nonatomic, retain) NSString * account;
@property (nonatomic, retain) NSDate * date;
@property (nonatomic, retain) NSString * message;
@property (nonatomic, retain) NSNumber * sentFlag;
@property (nonatomic, retain) NSString * status;
@property (nonatomic, retain) Conversation *conversation;
my では、ConversationListViewController
で並べ替えられたすべての会話を取得しlastMessage.date
ます。
次に、ConversationViewController
は を受け取り、Conversation
その を一覧表示しますmessages
。
今はlastMessage
手動で処理しているので、新しいメッセージを追加するたびに、ConversationViewController も更新しconversation.lastMessage
ます。
それを行うより良い方法はありますか?
現在、新しいメッセージを挿入/更新する場所は 1 つしかないためですが、挿入/更新トリガーのようなものがあれば、より良い音になります..
すべての会話を取得して、並べ替え記述子を使用してそれらを並べ替えることができることはわかってmessages.@max.date
いますが、それはメッセージ/会話の大規模なプールには適していないように思えます。