php*_*oid -1 java sql database android realm
在领域文档中,它被写入
result = result.sort("name", Sort.DESCENDING);
Run Code Online (Sandbox Code Playgroud)
简单的排序,但我想按最短的名字排序
通常在我们的MySql中
order by CHAR_LENGTH(Field)
Run Code Online (Sandbox Code Playgroud)
在这个领域有这样的方法吗?
不,但是你可以很容易地从0.88.0重新定义一个setter,你可以在其中执行以下操作:
public class Word extends RealmObject {
private String name;
@Index
@Required
private long nameLength;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
this.nameLength = name == null ? 0 : name.length();
}
}
Run Code Online (Sandbox Code Playgroud)
您可以指定一个迁移,为预先存在的元素创建此迁移
public class Migration implements RealmMigration {
@Override
public void migrate(final DynamicRealm realm, long oldVersion, long newVersion) {
RealmSchema schema = realm.getSchema();
if(oldVersion == 0) {
RealmObjectSchema wordSchema = schema.get("Word");
wordSchema.addField("nameLength", long.class, FieldAttribute.INDEXED, FieldAttribute.REQUIRED)
.transform(new RealmObjectSchema.Function() {
@Override
public void apply(DynamicRealmObject obj) {
obj.set("nameLength", obj.getString("name").length());
}
});
oldVersion++;
}
}
@Override
public void equals(Object object) {
return object != null && object instanceof Migration;
}
@Override
public int hashCode() {
return Migration.class.hashCode();
}
}
RealmConfiguration realmConfiguration = new RealmConfiguration.Builder(context)
.schemaVersion(1)
.migration(new Migration())
.build();
Run Code Online (Sandbox Code Playgroud)
然后你可以轻松做到
realm.where(Word.class).findAllSorted(WordFields.NAME_LENGTH, Sort.ASCENDING,
WordFields.NAME, Sort.ASCENDING);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
533 次 |
| 最近记录: |