gpt4 book ai didi

ios - 核心数据 : How do I delete all objects with an attribute in Swift?

转载 作者:搜寻专家 更新时间:2023-11-01 06:10:06 26 4
gpt4 key购买 nike

为简单起见,假设我有一个名为 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)
}
}

最佳答案

从 iOS 8 开始,您可以使用 NSPersistentStoreCoordinatorexecuteRequest(_ request: NSPersistentStoreRequest, withContext context: NSManagedObjectContext, error error: NSErrorPointer) 直接对数据存储进行批量请求 方法。

您可以像获取请求一样创建持久存储请求,然后使用上述方法将其传递给 PSC。

但是请注意,您不应该对使用此方法删除的对象有任何上下文引用。

对此有很好的解释here .

关于ios - 核心数据 : How do I delete all objects with an attribute in Swift?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27572100/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com