使用 Coredata 一起更新特定值(在所有表中通用)

Posted

技术标签:

【中文标题】使用 Coredata 一起更新特定值(在所有表中通用)【英文标题】:Updating a particular value (common in all tables) together using Coredata 【发布时间】:2018-04-06 05:55:11 【问题描述】:

我的核心数据结构中有很多表。所有实体都有一个名为is_sync 的公共属性,默认值为0。现在单击应用程序中其他位置的sync 按钮,我想将所有表中is_sync 的值从0 更新为1 . 我怎样才能做到这一点...?

我如何更新单个表中的值(对于不同的场景)的一个例子是这样的......

let fetchRequest: NSFetchRequest<NewProduct> = NewProduct.fetchRequest()
    fetchRequest.predicate = NSPredicate(format: "sku = %@", dfg!)

     do 

         let array_categories = try managedContext.fetch(fetchRequest)
         let cat = array_categories[0]

          cat.setValue(false, forKey: "isAddToCartVar")
          try managedContext.save()

         catch let error as NSError 
             print("Could not save. \(error), \(error.userInfo)")
         

但是我怎样才能同时更新所有表中的共同值(就像我在问题中解释的那样)...?

【问题讨论】:

根据您的功能在唯一表(如配置文件)中添加属性 is_sync,然后当您同步该配置文件时 is_sync 值将是 0 到 1。 所有表都有is_sync 值并且同步发生在所有表上。所以我想一起更新所有表的is_sync的值... 如果您想对每个实例进行相同的更新,请查看NSBatchUpdateRequest 【参考方案1】:

您可以使用它来更新 Core Data 中的标志:

func update()
    let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
    let request = NSFetchRequest<NSFetchRequestResult>(entityName: "SyncData")
    do
        let results = try context.fetch(request)

        if results.count > 0
            for result in results as! [NSManagedObject]
                if let is_SyncFlag = result.value(forKey: "is_sync") 
                    if is_SyncFlag == 0
                        result.setValue(1, forKey: "is_sync")
                        do
                            try context.save()
                        
                        catch
                        
                    
                
            
        
    
    catch
    

您可以在一个通用函数中为每个表执行此操作

【讨论】:

是的,就像您可以创建一个通用的可重用函数,该函数可以每次都为所有通用表调用。这只是一个演示代码供您参考,因为我不知道您是如何使用的 @v.bw 如果对您有帮助,请批准。 绝对是@Abhirajsinh Thakore。如果可行,我会接受并支持您的回答... 是的@v.bw 如果您遇到任何问题,请随时询问。 它工作了@Abhirajsinh Thakore。非常感谢。也投了赞成票..:)

以上是关于使用 Coredata 一起更新特定值(在所有表中通用)的主要内容,如果未能解决你的问题,请参考以下文章

Restkit 删除 coredata 中特定对象的所有对象

使用 phpmyadmin 自动更新表中的字段

更新表中所有行的有效方法

更新 CoreData 中的数据及其在视图中的值

在 oracle 数据库的所有表中更新与特定模式匹配的列

CoreData 和 UITableView:在单元格中显示值