如何在realm.io中自然排序?

时间:2016-04-29 10:21:20

标签: realm

我有一个字段" name" (字符串),其值为" FOO1000"," FOO1100"," FOO150"等等,并使用realm-io for Java(Android,0.89.1)来获取它们。

当我使用.findAllSorted(" name",Sort.ASCENDING)时,它们不会自然排序。输出将是

  

FOO1000
  FOO1100
  FOO150

我想要实现的是像

这样的自然排序
  

FOO150
  FOO1000
  FOO1100

有没有办法进行自然分类?

2 个答案:

答案 0 :(得分:0)

Realm使用标准排序算法。它会一次对一个字符进行排序,并且由于5大于1,它最后会出现。您不能期望将字符串的某些部分解释为数字。 如果您有150,1000,1100作为数字并排序,您将获得您期望的排序顺序。如果你需要一个字符串和一个数字,你应该有FOO0150而不是FOO150,它将按照你的预期排序。

答案 1 :(得分:0)

默认情况下,Realm没有自然排序。用前导零填充数字将模拟自然排序。

e.g。

Foo 100
Foo 2000
Foo 40
Foo 9

成为(根据需要添加更多零)

Foo 0000100
Foo 0002000
Foo 0000040
Foo 0000009

产生自然排序的输出

Foo 0000009
Foo 0000040
Foo 0000100
Foo 0002000

您可能希望创建一个分别存储填充值的新字段。