我怎麼能真正同步NSMutableArray與NSArrayController?排序在NSArrayController
我在我的UI中有類Dialog和NSArrayController,它將Content Array綁定到Dialog.messages
。當我直接在Dialog.messages
增加任何新項目,他們也在NSArrayController的提供,一切看起來不錯:
[Dialog addMessage: someMsgItem];
但我也需要對郵件進行排序和它僅適用於Dialog.messages
而不是NSArrayController的:
NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey: @"timestamp" ascending: YES];
_messages = [NSMutableArray arrayWithArray: [_messages sortedArrayUsingDescriptors: @[sort]]];
如何使這些更改也適用於我的NSArrayController?這是Dialog類實現的一部分:
@implementation Dialog
@synthesize messages = _messages; // NSMutableArray
- (void) addMessage:(Message *)msg {
[self insertObject:msg inMessagesAtIndex:[_messages count]];
}
- (void) removeMessage:(Message *)msg {
[self removeObjectFromMessagesAtIndex:[self.messages indexOfObject:msg]];
}
- (NSArray *) messages {
return [_messages copy];
}
- (void) setMessages:(NSArray *)messages {
[self willChangeValueForKey:@"messages"];
_messages = [NSMutableArray arrayWithArray:messages];
[self didChangeValueForKey:@"messages"];
}
- (void) insertObject:(Message *)msg inMessagesAtIndex:(NSUInteger)index {
[_messages insertObject:msg atIndex:index];
}
- (void) removeObjectFromMessagesAtIndex:(NSUInteger)index {
[_messages removeObjectAtIndex:index];
}
@end
我把它用於NSCollectionView,但認爲沒關係。謝謝你的建議,這比我想象的要容易得多。這種NSArrayController實例完美工作: '[nsArrayControllerItem setSortDescriptors:@ [[NSSortDescriptor sortDescriptorWithKey:@「timestamp」ascending:YES]]];' – 2015-04-05 11:11:05