如何向领域添加自动增量值

How to add auto increment value to realm

我最近从核心数据转移到了领域。在核心数据中,我为插入的每条记录自动递增 pk。

在领域我找不到自动增量这样的东西。

目前我正在使用 uuid 作为 pk。

+(NSString *)primaryKey{
    return @"uuid";
}

我仍然需要引用旧的 pk,所以我在领域中添加了一个新的字段 oldPK,这样我就可以用它来引用其他的 sqlite tables.This 不是一个长期的解决方案。我正在寻找短期解决方案,直到我完全从 sqlite 迁移到 Realm。

现在我的方法是从数据库中现有的oldPk值中获取最大值,并为新添加的记录增加它。

在Realm模型中添加自动增量有什么更好的方法吗?

Realm 没有任何自动增量主键。您应该为每条记录设置它。您可以为每条记录使用唯一的主键:

[NSUUID UUID].UUIDString; 

或者如果你想使主键连续,你可以查询所有记录,按主键排序,获取最新记录的主键,将其递增并用作新记录的主键:

RLMResults<YourRecordClass *> *records = [[YourRecordClass allObjects] sortedResultsUsingKeyPath:@"uuid" ascending:YES];
NSInteger newPrimaryKey = [records lastObject].uuid + 1;
YourRecordClass *newRecord = [[YourRecordClass alloc] init];
newRecord.uuid = newPrimaryKey;

RLMRealm *realm = [RLMRealm defaultRealm];
[realm beginWriteTransaction];
[realm addObject:author];
[realm commitWriteTransaction];