单个objectID的批量请求swift
问题描述:
我试图用批量请求的帮助来更新swift中的单个实体。它适用于更新所有实体。是否有可能使用它的objectID更新单个实体? 以下是示例代码:单个objectID的批量请求swift
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let managedContext = appDelegate.managedObjectContext
let batchRequest = NSBatchUpdateRequest(entityName: "Outlays")
batchRequest.propertiesToUpdate = ["purchase": self.purchase.text!]
batchRequest.resultType = .UpdatedObjectsCountResultType
do {
let results = try managedContext.executeRequest(batchRequest) as! NSBatchUpdateResult
print(" \(results.result) results changed")
} catch {
print(error)
}
在此先感谢!
答
不,不需要更新批量请求中的单个实体(NSManagedObject
)。
最简单的方法就是在Outlays对象上设置新值。当然,他们必须是NSManagedObject
。您NSManagedObjectContext
呼叫saveContext
算账:
myOutlay.text = "changed"
let managedContext = appDelegate.managedObjectContext
var error: NSError? = nil
managedContext.save(&error)
如果您只有NSManagedObject
的NSManagedObjectID
,它需要从数据库中得到它的第一:
let managedContext = appDelegate.managedObjectContext
var myOutlay: Outlays = managedObjectContext.existingObjectWithID(outlayManagedID, error: nil) as? Outlays
myOutlay.text = "changed"
let managedContext = appDelegate.managedObjectContext
var error: NSError? = nil
managedContext.save(&error)