如何检查CoreData是不是为空?

Posted

技术标签:

【中文标题】如何检查CoreData是不是为空?【英文标题】:How to check if CoreData is empty?如何检查CoreData是否为空? 【发布时间】:2020-06-14 19:47:30 【问题描述】:

我正在尝试检查某个实体是否有数据,所以我写了这段代码,我不确定我的代码是否正确。当我检查我的代码时,我发现如果有数据,我得到的答案是“数据存在” ,但如果没有数据编译器忽略else语句。我不明白为什么会这样。

   func entityIsEmpty()
   
     let context = objAppDelegate.persistentContainer.viewContext
     let fetchRequest = NSFetchRequest<NSFetchRequestResult>.init(entityName: "myEntity")

     //do
     //result = try context.fetch(fetchRequest) as! [NSManagedObject]
     result = fetchRequest as! [NSManagedObject] //ERROR
     for data in result

     var obj = userNSObj()
     obj.myObject = data.value(forKey: "myAttribute") as! String


     myArray.append(obj)
        if myArray != nil
            print("data exist")
        else
            print("data not exist")
        
                        

             //catch
             //print("Failed")
            //

    

【问题讨论】:

if myArray != nil 替换为if !myArray.isEmpty。但是,只有在方法开始时数组为空时,这才可靠地工作。 直接带我到catch 只是换行不能throw报错。 请查看更新后的问题。我不确定我所做的改变。 【参考方案1】:

编辑后你把代码弄乱了。

这会检查获取的数据数组是否为空,如果数组为空,则检查returns

func entityIsEmpty()

    let context = objAppDelegate.persistentContainer.viewContext
    let fetchRequest = NSFetchRequest<myEntity>(entityName: "myEntity")

    do 
        let result = try context.fetch(fetchRequest)
        if result.isEmpty 
            print("data not exist")
            return
         else 
            print("data exist")
        

        for data in result 
            var obj = userNSObj()
            obj.myObject = data.myAttribute
            myArray.append(obj)
        

     catch 
        print(error)
    

【讨论】:

以上是关于如何检查CoreData是不是为空?的主要内容,如果未能解决你的问题,请参考以下文章

在不调用当前 NSManagedObjectContext (核心数据)的情况下检查 iOS 中的数据库是不是为空?

将 CoreData 与对象一起使用?

CoreData 测试实体是不是为空

如何检查 Recyclerview 是不是为空

如何检查关系是不是已建立 - Core Data

如何检查数据读取器是不是为空或为空