首页 > 解决方案 > 如何检查CoreData是否为空?

问题描述

我正在尝试检查某个实体是否有数据,所以我写了这段代码我不确定我的代码是否正确。当我检查我的代码时,我发现如果有数据我得到了“数据存在”的答案,但是如果没有数据编译器忽略 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")
            //}

   } 

标签: swiftcore-dataswift4xcdatamodel

解决方案


编辑后你搞砸了代码。

这将检查获取的数据数组是否为空,return如果数组为空,则检查 s

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)
    }
}

推荐阅读