2016-11-11 2 views
3

Я тестировал возможности изменения порядка RLMArray с объектами. Я знаю, что я могу добавить объекты в NSArray, а затем добавить reverseObjectEnumerator в этот массив, но я хочу продолжить использование RLMarray, поскольку некоторые из объектов могут быть признаны недействительными. Они останутся недействительными и выдадут ошибку, если они добавлены в NSArray.Обратный порядок объектов внутри RLMArray

ответ

3

Как это показано, объект RLMArray является прямым отображением того, как объекты хранятся в Царстве. Если вы попытаетесь изменить порядок объектов там, это буквально, как они будут храниться на диске.

Вы, безусловно, делаете правильный звонок, пытаясь продолжить использование RLMArray. Копирование объектов из RLMArray в NSArray будет отображаться в каждом объекте, который будет одновременно производительностью и памятью.

Лучшее, что я могу порекомендовать, - продолжить использование RLMArray, но использовать метод, который абстрагирует и отменяет доступ к нему.

@interface MyObject: RLMObject 

@property RLMArray<ChildObject *><ChildObject> *children; 
- (RLMObject *)childAtInvertedIndex:(NSInteger)index; 

@end 

@implementation MyObject 

- (RLMObject *)childAtInvertedIndex:(NSInteger)index 
{ 
    NSInteger invertedIndex = (self.children.count - 1) - index; 
    return self.children[invertedIndex]; 
} 

@end 

Таким образом, вы все еще получаете преимущество доступа к объектам из RLMArray непосредственно, но вы в состоянии контролировать порядок, в котором они обращались. :)

+1

Очень умный. С уважением –

+0

Спасибо большое Amro! :) – TiM

+0

Спасибо, ТиМ, он выглядит как умный способ обратить вспять, я попробую этот подход. – EmilDo

Смежные вопросы