在Core Data中,如何在swift 4中执行`if exists update else insert`? [复制]
Posted
技术标签:
【中文标题】在Core Data中,如何在swift 4中执行`if exists update else insert`? [复制]【英文标题】:In Core Data, how to do `if exists update else insert` in swift 4? [duplicate] 【发布时间】:2018-03-26 06:58:34 【问题描述】:我是核心数据的新手。我只想检查核心数据中是否存在记录,然后更新其他插入。我可以插入、获取删除数据但无法更新。这是我的一段代码
var context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
var user = [Users]()
func insertData()
let newUser = NSEntityDescription.insertNewObject(forEntityName: "Users", into: context)//entity(forEntityName: "Users", in: context)
newUser.setValue("chatt", forKey: "name")
newUser.setValue("100", forKey: "balance")
newUser.setValue("123", forKey: "user_id")
do
try context.save()
catch
print("Failed saving")
请帮我更新代码sn-p
【问题讨论】:
***.com/a/38459233/5461400 你可以参考我的回答here 这已被错误地审核 - 如果它是重复的,请引用重复的答案。 Devbot10 的答案是对另一个问题的回答——如何更新以前存在的核心数据对象——这不是这个问题的答案。 【参考方案1】:试试这个:
var fetchRequest = NSFetchRequest(entityName: "Users")
fetchRequest.predicate = NSPredicate(format: "userName = %@", userName)
if let fetchResults = appDel.managedObjectContext!.executeFetchRequest(fetchRequest, error: nil) as? [NSManagedObject]
if fetchResults.count != 0
// update
var managedObject = fetchResults[0]
managedObject.setValue(accessToken, forKey: "accessToken")
context.save(nil)
else
//insert as new data
干杯:)
【讨论】:
先生,它显示 NSFetchRequestResults 没有成员“计数”以上是关于在Core Data中,如何在swift 4中执行`if exists update else insert`? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Core Data 中使用 swift 4 Codable?
如何在 Core Data 中使用 swift 4 Codable?
IOS Swift Core Data如何在propertiesToFetch中添加不在propertiesToGroupBy中的字段