我想按日期对信息进行排序。例如,数据格式为:2017年11月10日。我正在尝试这样的事情:
RealmResults<ResultFavorite> resultFavoritesReleaseDate = realm.where(ResultFavorite.class).sort("releaseDate", Sort.DESCENDING).findAll();
但它不起作用,查询中的fieldName是一个String。
fwzugrvs1#
当你说“它不起作用”时,我假设实际上记录是按字符串降序而不是日期顺序排序的。我认为有两种选择。首先,Date是受支持的Realm字段类型,因此您可以将字段更改为该类型(或可选的:Date?如果使用Kotlin)。您的查询应该可以正常工作。这将是首选的解决方案。第二个选项远没有那么优雅,但在无法更改字段类型时是必需的。在这种情况下,您需要查询所有对象,然后将结果类型Map到数组,并使用java或Kotlin排序例程进行排序。排序标准是从字符串到日期的转换。这在内存使用方面也是缓慢且低效的。
Date
Date?
2wnc66cl2#
我使用不同的方法从领域中获取数据,领域以不同的方式对结果进行排序。我的情况可能与问题中的确切情况无关,但仍然可以帮助其他人进行排序。排序是一个函数,您必须定义排序字段和降序/升序的true/false。
const realm = await RealmSetup.getMyInstance(parameter); const resultList = realm.objects<MyType>('schemaName').sorted('createdDate', true); return resultList as unknown as MyType[];
2条答案
按热度按时间fwzugrvs1#
当你说“它不起作用”时,我假设实际上记录是按字符串降序而不是日期顺序排序的。
我认为有两种选择。
首先,
Date
是受支持的Realm字段类型,因此您可以将字段更改为该类型(或可选的:Date?
如果使用Kotlin)。您的查询应该可以正常工作。这将是首选的解决方案。第二个选项远没有那么优雅,但在无法更改字段类型时是必需的。在这种情况下,您需要查询所有对象,然后将结果类型Map到数组,并使用java或Kotlin排序例程进行排序。排序标准是从字符串到日期的转换。这在内存使用方面也是缓慢且低效的。
2wnc66cl2#
我使用不同的方法从领域中获取数据,领域以不同的方式对结果进行排序。我的情况可能与问题中的确切情况无关,但仍然可以帮助其他人进行排序。排序是一个函数,您必须定义排序字段和降序/升序的true/false。