Es kommt häufig vor, dass man eine große Anzahl von Datensätzen in einem Rutsch ändern muss. Dafür bietet Core Data den NSBatchUpdateRequest an. Im nachfolgenden Beispiel wollen wir das Attribut visible bei allen Datensätzen, bei denen es false ist, auf true setzen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
let batchRequest = NSBatchUpdateRequest(entityName: "Entity") batchRequest.predicate = NSPredicate(format: "visible == %@", false) batchRequest.propertiesToUpdate = ["visible" : true] batchRequest.resultType = .UpdatedObjectsCountResultType var error: NSError? = nil if let request = managedObjectContext.executeRequest(batchRequest, error: &error) as? NSBatchUpdateResult { if let numberOfAffectedRows = request.result as? Int { println("\(numberOfAffectedRows) Datensätze geändert") } } |