如何覆盖核心数据中的数据?如何解决Core Data中的重复数据?
Posted
技术标签:
【中文标题】如何覆盖核心数据中的数据?如何解决Core Data中的重复数据?【英文标题】:how to override data in core data ? how to solve duplicate data in Core Data? 【发布时间】:2016-05-06 03:14:23 【问题描述】:我正在从服务器获取数据,然后将所有数据保存到 Core Data。 但是当我保存它时,它会创建多个副本(重复数据)。
我的问题是:
如何处理Core Data中的重复数据?
如何在 CoreData 中使用 Swift 保存覆盖数据?
【问题讨论】:
嗨点心三清!欢迎来到堆栈溢出。你试过什么?你得到什么错误?请详细说明您的问题以及您尝试过的内容以及在什么平台上,以便我们有更好的机会准确回答。 【参考方案1】:要在核心数据中保存新数据,您可以从核心数据中删除所有记录,然后您可以将所有记录保存在核心数据中。
这是从核心数据中删除所有记录的功能。您可以在将记录保存到核心数据之前调用此函数。
func deleteEverything()
let appDel = UIApplication.sharedApplication().delegate as! AppDelegate
let context = appDel.managedObjectContext
let coord = appDel.persistentStoreCoordinator
let fetchRequest = NSFetchRequest(entityName: "Categorytbl") // Your entity name
if #available(ios 9.0, *)
let deleteRequest = NSBatchDeleteRequest(fetchRequest: fetchRequest)
do
try coord.executeRequest(deleteRequest, withContext: context)
catch let error as NSError
debugPrint(error)
else
// Fallback on earlier versions
do
let fetchedObjects : NSArray = try context.executeFetchRequest(fetchRequest)
if(fetchedObjects.count > 0)
for currObj in fetchedObjects
context.deleteObject(currObj as! NSManagedObject)
let _ : NSError! = nil
do
try context.save()
catch
print("Error in Deletion : \(error)")
catch let error as NSError
debugPrint(error)
我也有同样的问题。它在我的最后工作正常。
【讨论】:
【参考方案2】:EXAMPLE :
let fetchReq = NSFetchRequest(entityName: "Theater")
var array = [Theater]()
fetchReq.returnsObjectsAsFaults = false
do
let obj = try moc.executeFetchRequest(fetchReq) as! [Theater]
for details:Theater in obj
array.append(details)
print(details.movies)
catch
print("Error in Fetching")
return nil
你有在数组中存储对象
现在
let obj:Theater = array[0] as! Theater
//Update Record
do
try obj.managedObjectContext?.save()
catch
print("Exception")
会更新记录
【讨论】:
以上是关于如何覆盖核心数据中的数据?如何解决Core Data中的重复数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用更新的数据刷新 NSManagedObject - Core Data