gpt4 book ai didi

ios - 如何在 Realm 中设置自动递增键?

转载 作者:IT王子 更新时间:2023-10-29 07:44:02 25 4
gpt4 key购买 nike

每个 ChatData 对象都有一个唯一的 msgid。

@interface ChatData : RLMObject
@property NSInteger msgid;
....
@end

但每次我创建一个新对象时,我都必须查询所有对象并获取最后的 msgid。

RLMArray *all = [[ChatData allObjects] arraySortedByProperty:@"msgid" ascending:YES];
ChatData *last = [all lastObject];
ChatData *newData = [[ChataData alloc]init];
newData.msgid = last.msgid+1;

是否有一种有效的方法来替换此实现?

最佳答案

Realm 没有自动递增行为,所以你需要自己管理它。关于您的数据,我鼓励您问自己一个问题:

是否需要连续的、连续的整数 ID?

如果不是,那么唯一的字符串主键可能就足够了。然后,您可以使用 [[NSUUID UUID] UUIDString] 之类的东西来生成唯一的字符串 ID。这样做的好处是这些 UUID 或多或少保证是唯一的,即使在多线程场景中也是如此。

如果是这样,始终将最后一个数字保留在内存中可能会更有效,这样每次生成新 ID 时都不需要查询。如果对象可能在多个线程中创建,请确保您的 nextPrimaryKey() 函数是线程安全的,否则它可能会生成相同的数字两次(或更多次!)。

关于ios - 如何在 Realm 中设置自动递增键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26252432/

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