如何向领域添加自动增量值
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];
我最近从核心数据转移到了领域。在核心数据中,我为插入的每条记录自动递增 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];