Can we define auto increment attribute in core data?
Hello I am using core data in my application, and want to set ID attribute in every开发者_如何学Go entity as autoincrement. Is it possible in core data? Or I have to manually insert the entry and manage the increment programatically??
If you are thinking of the id for the primary keys then core data handles this for you. On each object there is an objectID
property you can access to see it. When you create an object from the managed object context, core data assigns a temporary id. When you commit the changes from the managed object context, core data assigns a perminant id. I don't think it would be a good idea to manually try and set this.
Read this stackoverflow thread for more details.
I used that way with NSFetchedResultsController
:
first sorting:
fetchRequest.sortDescriptors = [NSSortDescriptor(key: "id", ascending: false)]
Then in add object method:
// 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)
精彩评论