我们能在Core Data中定义自动增量属性吗?

35

你好,我正在使用Core Data在我的应用程序中,想要将每个实体中的ID属性设置为自动递增。在Core Data中是否有这个功能?还是我必须手动插入条目并通过编程方式管理递增?

2个回答

44
如果您想获取主键ID,那么核心数据(Core Data)会为您处理。在每个对象上都有一个objectID属性可供访问。从托管对象上下文创建对象时,core data会分配一个临时ID。当您提交托管对象上下文的更改时,core data会分配一个永久ID。我认为手动尝试设置将不是一个好主意。
阅读此stackoverflow线程以获取更多详细信息。

如何将objectId转换为NSNumber,以便您可以将其存储在核心数据上? - Alizain Prasla

3
我可以帮您翻译成英文,内容如下:

我曾使用NSFetchedResultsController这种方法:

先进行排序:

fetchRequest.sortDescriptors = [NSSortDescriptor(key: "id", ascending: false)]

接下来在添加对象方法中:

// Minimum id value
var recordID = 1
if let lastRecordID = fetchedResultsController.fetchedObjects?.first?.id {
    recordID = Int(lastRecordID) + 1
}

let newRecord = Record(context: persistentContainer.viewContext)
newRecord.id = Int32(recordID)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接