我一直在测试用对象反转RLMArray顺序的可能性。 我知道我可以将对象添加到NSArray然后向该数组添加一个reverseObjectEnumerator但我想继续使用RLMarray,因为某些对象可能无效。如果在NSArray中添加它们,它们将保持无效并抛出错误。
答案 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
访问对象,但是您可以控制它们的访问顺序。 :)