3
我一直在測試用對象顛倒RLMArray順序的可能性。 我知道我可以添加對象到NSArray,然後添加一個reverseObjectEnumerator到該數組,但我想繼續使用RLMarray,因爲一些對象可能會失效。如果添加到NSArray中,它們將保持無效並拋出錯誤。RLMArray內部對象的顛倒順序
我一直在測試用對象顛倒RLMArray順序的可能性。 我知道我可以添加對象到NSArray,然後添加一個reverseObjectEnumerator到該數組,但我想繼續使用RLMarray,因爲一些對象可能會失效。如果添加到NSArray中,它們將保持無效並拋出錯誤。RLMArray內部對象的顛倒順序
就目前而言,RLMArray
對象是直接映射到對象如何存儲在Realm中。如果你嘗試改變那裏的對象的順序,這就是它們將如何存儲在磁盤上。
雖然你確實正在嘗試繼續使用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
直接訪問對象的好處,但你能夠控制他們的訪問順序。 :)
非常聰明。 Regards –
非常感謝Amro! :) – TiM
謝謝TiM它看起來像一個聰明的方式來扭轉,我會嘗試這種方法。 – EmilDo