gpt4 book ai didi

swift - 核心数据在存在时更新现有对象

转载 作者:可可西里 更新时间:2023-11-01 02:08:54 24 4
gpt4 key购买 nike

我创建了一个表:键,值。

它只是为了保存一些参数,当键不存在时,我会插入,但当它存在时,我会更新值。

在我的例子中,当键已经存在时,它会在 ma 表中执行另一个插入,键等于 nil:

public static func insertValueWithKey(context: NSManagedObjectContext, key:String, value:String){

let fetchRequest : NSFetchRequest<NSFetchRequestResult>

if #available(iOS 10.0, *) {
fetchRequest = Params.fetchRequest()
} else {
fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Params")
}

let predicate = NSPredicate(format: "key=%@", key)
fetchRequest.predicate = predicate

do {
let results = try context.fetch(fetchRequest)

if(results.count != 0){

let paramsDescription = NSEntityDescription.entity(forEntityName: "Params", in: context)


let params = NSManagedObject(entity: paramsDescription!, insertInto: context) as! Params


params.value = value

do {
try context.save()
} catch let error as NSError {
print ("Error first demande insertion \(error)")
}

} else if (results.count == 0) {

let params = NSEntityDescription.insertNewObject(forEntityName: "Params", into: context) as! Params

params.key = key
params.value = value

context.insert(params)

do {
try context.save()
} catch let error as NSError {
print ("Error first demande insertion \(error)")
}
}


} catch {
let fetchError = error as NSError
print(fetchError)
}

}

我不明白为什么,因为它在模拟器上也能正常工作,但在设备上却不行...

最佳答案

替换:

    let params = NSManagedObject(entity: paramsDescription!, insertInto: context) as! Params

    let params = results.last as! Params

NSManagedObject(entity: insertInto:) 在功能上与 NSEntityDescription.insertNewObject(forEntityName:into:)

相同

关于swift - 核心数据在存在时更新现有对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41570321/

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