1
我创建了一个表:key,value。核心数据在存在时更新现有对象
这只是为了保存一些参数,当键不存在时,我做一个插入,但是当它存在时,我更新值。
在我的情况下,当键已经存在它在马表的另一插入与关键等于零:
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)
}
}
我不明白为什么,因为它的工作以及在模拟器但不是设备...
设备中可用的iOS版本? –
@SagarChauhan我正在使用最新版本和旧版本的设备进行测试。9.3.2 – Ben
有关您的信息,如果您的iOS版本低于10.0,则此代码永远不会执行。 '如果#available(iOS 10.0,*){ fetchRequest = Params.fetchRequest() }' –