【发布时间】:2021-11-26 13:23:51
【问题描述】:
我能够从 Core Data 保存和检索数据,但我不知道如何在 Core Data 中不复制或避免相同的保存数据。我正在复制相同的值,但我不想保存核心数据中的相同值(如果它已经存在)。我不知道在保存时要检查哪些代码不重复?
func fetchDbdata(){
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let managedContext = appDelegate.persistentContainer.viewContext
let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: "Day")
do {
let dayList = try managedContext.fetch(fetchRequest)
for item in dayList{
let id = item.value(forKeyPath: "id") as? String
let name = item.value(forKey: "name") as? String
print(name as Any)
}
}
catch let error as NSError {
print("\(error), \(error.userInfo)")
}
}
func saveDaysList(id: String,name: String) {
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
return
}
let managedContext = appDelegate.persistentContainer.viewContext
let entity = NSEntityDescription.entity(forEntityName: "Day", in: managedContext)!
let days = NSManagedObject(entity: entity, insertInto: managedContext)
days.setValue(id, forKey: "id")
days.setValue(name, forKey: "name")
do {
try managedContext.save()
daysData.append(days)
} catch let error as NSError {
print("Could not save. \(error), \(error.userInfo)")
}
}
【问题讨论】:
-
您是在谈论用新值更新已经存在的对象(练习)吗?还有
Day和Excersice有什么关系,你贴出来的fetch方法好像跟贴出来的save方法没有关系? -
每当我将值保存在数据库中时,我都会复制相同的值。例如,如果我调用 save 函数,那么每次都保存 id 和 name @JoakimDanielson
-
是的,但是你试图做什么,目的是什么?
-
如果一个值一旦存储在数据库中,那么该值又不会保存在数据库中@JoakimDanielson
-
然后在保存之前检查该id是否存在于获取列表中。