为简单起见,我有一个名为DOWJONES的实体。 AAPL和AAPL_NSDate之外的每个对象都有两个属性。 ValueForKey:AAPL返回股票价格历史,ValueforKey AAPL_NSDate返回相应的日期。
如何在swift中快速有效地删除股票价格历史记录和相应日期? 这是我查询的方式:
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)
}
}
答案 0 :(得分:3)
您可以使用NSPersistentStoreCoordinator
的{{1}}方法,从iOS 8开始直接批量请求到数据存储。
您可以类似于获取请求创建持久存储请求,然后使用上述方法将其传递给PSC。
但请注意,您不应该对使用此方法删除的对象进行任何上下文引用。
对here有一个很好的解释。
答案 1 :(得分:2)
迭代获取请求的结果,并在每个请求上调用self.context.deleteObject(_:)
。