swift - 如何检查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")
//}
}
解决方案
编辑后你搞砸了代码。
这将检查获取的数据数组是否为空,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)
}
}
推荐阅读
- mysql - 如何从 SQL 中的子查询中为列随机分配值?
- amazon-web-services - 验证 CloudWatch Events ScheduleExpression 值是否有效?
- php - Laravel 在队列上调度普通 json
- keras - 此 VAE 模型无法编译
- java - @Scheduled 注释中使用的线程是否在完成执行之前释放到池中?
- python - 无法在安装了 anaconda 的机器上运行库
- java - 来自 Spring 的 Json 响应中的时区问题
- java - 频率分析,有人知道如何解决这个问题。我不知道这封信能来多少次
- c# - 范围报告不生成报告
- amazon-web-services - KOPS 如何在 AWS 中重新创建主节点?