为简单起见,我有一个名为DOWJONES的实体。每个对象(AAPL和AAPL_NSDate)都有两个属性。ValueForKey:AAPL返回股价历史记录,ValueforKey AAPL_NSDate返回相应的日期。
如何快速有效地删除股票价格历史记录和相应的日期?
这是我查询的方式:
var appDel:AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let context = (UIApplication.sharedApplication().delegate as AppDelegate).managedObjectContext!
var request = NSFetchRequest(entityName: "DOWJONES")
request.returnsObjectsAsFaults = false
var dowjones = context.executeFetchRequest(request, error: nil)! as [DOWJONES]
var aapl = (dowjones as NSArray).valueForKey("AAPL") as NSArray
正如@ chris-wagner所建议的那样,这就是我可以遍历结果并删除的方法。
func deleteCoreDataObjects(){
var request = NSFetchRequest(entityName: "DOWJONES")
request.returnsObjectsAsFaults = false
var dowjones = context.executeFetchRequest(request, error: nil)!
if dowjones.count > 0 {
for result: AnyObject in dowjones{
context.deleteObject(result as NSManagedObject)
println("NSManagedObject has been Deleted")
}
context.save(nil)
}
}
您可以使用NSPersistentStoreCoordinator
的executeRequest(_ request: NSPersistentStoreRequest, withContext context: NSManagedObjectContext, error error: NSErrorPointer)
方法将批处理请求直接从iOS 8开始直接发送到数据存储上。
您可以类似于获取请求来创建持久性存储请求,然后使用上述方法将其传递给PSC。
但是请注意,使用此方法删除的对象不应有任何上下文引用。
有它的一个很好的解释在这里。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句