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