【问题标题】:how to override data in core data ? how to solve duplicate data in Core Data?如何覆盖核心数据中的数据?如何解决Core Data中的重复数据?
【发布时间】:2016-05-06 03:14:23
【问题描述】:

我正在从服务器获取数据,然后将所有数据保存到 Core Data。 但是当我保存它时,它会创建多个副本(重复数据)。

我的问题是:

  1. 如何处理Core Data中的重复数据?

  2. 如何在 CoreData 中使用 Swift 保存覆盖数据?

【问题讨论】:

  • 嗨点心三清!欢迎来到堆栈溢出。你试过什么?你得到什么错误?请详细说明您的问题以及您尝试过的内容以及在什么平台上,以便我们有更好的机会准确回答。

标签: ios arrays json xcode 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")
        }
    

    会更新记录

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多