2015-07-09 98 views
0

我试图用批量请求的帮助来更新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) 
} 

在此先感谢!

回答

0

不,不需要更新批量请求中的单个实体(NSManagedObject)。

最简单的方法就是在Outlays对象上设置新值。当然,他们必须是NSManagedObject。您NSManagedObjectContext呼叫saveContext算账:

myOutlay.text = "changed" 
let managedContext = appDelegate.managedObjectContext 
var error: NSError? = nil 
managedContext.save(&error) 

如果您只有NSManagedObjectNSManagedObjectID,它需要从数据库中得到它的第一:

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)