RLMArray

时间:2016-11-11 13:03:09

标签: ios realm

我一直在测试用对象反转RLMArray顺序的可能性。 我知道我可以将对象添加到NSArray然后向该数组添加一个reverseObjectEnumerator但我想继续使用RLMarray,因为某些对象可能无效。如果在NSArray中添加它们,它们将保持无效并抛出错误。

1 个答案:

答案 0 :(得分:3)

目前,buildscript { repositories { mavenLocal() mavenCentral() maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.2.2' } } allprojects { apply plugin: "eclipse" apply plugin: "idea" version = '1.0' ext { appName = "scalaTest" gdxVersion = '1.9.4' roboVMVersion = '2.2.0' box2DLightsVersion = '1.4' ashleyVersion = '1.7.0' aiVersion = '1.8.0' } repositories { mavenLocal() mavenCentral() maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } maven { url "https://oss.sonatype.org/content/repositories/releases/" } } } project(":desktop") { apply plugin: "java" dependencies { compile project(":core") compile "com.badlogicgames.gdx:gdx-backend-lwjgl:$gdxVersion" compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop" } } project(":android") { apply plugin: "android" configurations { natives } dependencies { compile project(":core") compile "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion" natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi" natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi-v7a" natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-arm64-v8a" natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86" natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86_64" } } project(":core") { apply plugin: "java" apply plugin: "scala" dependencies { compile "com.badlogicgames.gdx:gdx:$gdxVersion" compile "org.scala-lang:scala-library:2.11.7" } } tasks.eclipse.doLast { delete ".project" } 对象是直接映射对象在Realm中的存储方式。如果您尝试更改其中对象的顺序,那就是它们将如何存储在磁盘上。

你肯定正在尝试继续使用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 访问对象,但是您可以控制它们的访问顺序。 :)