2017-07-08 58 views
1

我最近從核心數據移到了領域。在覈心數據中,我爲每個插入的記錄自動增加pk。如何將自動增量值添加到域

在這個領域我找不到像自動增量這樣的東西。

此刻我正在使用uuid作爲pk。

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

我仍然需要有老PK的引用,所以我增加了一個新的領域oldPK到的境界,所以我可以用它來引用其他sqlite的tables.This是不是一個長期的解決方案。我正在尋找短期解決方案,直到我完全從sqlite遷移到Realm。

現在我的方法是從數據庫中現有的oldPk值中獲取最大值,併爲新添加的記錄增加它。

有沒有更好的向Realm模型添加自動增量?

回答

1

領域沒有任何自動增量主鍵。你應該爲每個記錄設置它。您可以使用一個唯一的主鍵爲每個記錄:

[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]; 
相關問題