gpt4 book ai didi

flutter - Hive Flutter,如何以相反的键顺序获取值

转载 作者:行者123 更新时间:2023-12-04 08:26:10 26 4
gpt4 key购买 nike

我正在使用一个名为 Hive 的库,它是一个非常快的 NoSQL 数据库。我已经设置好了一切,我正在尝试以相反的顺序(后进先出)获取值。
我有一盒条目,每个条目都有一个创建日期和一个条目文本。正如您在代码中看到的,无论何时创建一个条目,它的日期都是“现在”。我想获取条目列表 从最近的条目(最新日期)开始 .默认情况下,使用 box.add() 添加的第一个条目将有一个键 0,它后面的一个键是 1,等等。在 Hive 的文档中,它说可以“按逆字典顺序”获取值,但我无法弄清楚。
提前致谢!

import 'package:hive/hive.dart';
part '../type_adapters/entry.g.dart';

@HiveType(typeId: 0)
class Entry extends HiveObject {
@HiveField(0)
String _entryText;
@HiveField(1)
DateTime _creationDate;
Entry(this._entryText) {
_creationDate = DateTime.now();
}

String get entryText => _entryText;
DateTime get creationDate => _creationDate;

@override
String toString() {
return "$_entryText, $_creationDate, $key";
}
}

图书馆链接:
Hive Hive Documentation

最佳答案

所以我想通了,你必须在时传递你自己的排序函数开箱 . Hive 的默认方式是:

/// Efficient default implementation to compare keys
int defaultKeyComparator(dynamic k1, dynamic k2) {
if (k1 is int) {
if (k2 is int) {
if (k1 > k2) {
return 1;
} else if (k1 < k2) {
return -1;
} else {
return 0;
}
} else {
return -1;
}
} else if (k2 is String) {
return (k1 as String).compareTo(k2);
} else {
return 1;
}
}
他们的默认函数按字典顺序为您提供值。 为了扭转它 ,必须传递我自己的“keyComparator”(这是用于对值进行排序的函数,它接收 2 个键并返回一个 int)
所以当打开盒子时:
_entryBox = await Hive.openBox(ENTRY_BOX, keyComparator: _reverseOrder);
_reverseOrder 函数:
  int _reverseOrder(k1, k2) {
if (k1 is int) {
if (k2 is int) {
if (k1 > k2) {
return -1;
} else if (k1 < k2) {
return 1;
} else {
return 0;
}
} else {
return -1;
}
}
}
如果您想使用开始和结束键而不是一次获取所有值( box.valuesBetween(startKey: , endKey:, ),它会变得更加复杂。

关于flutter - Hive Flutter,如何以相反的键顺序获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65251802/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com