如何使用
swift检查核心数据是否为空.我试过这个方法:
var people = [NSManagedObject]() if people == nil { }
但这会导致此错误
“binary operator ‘==’ cannot be applied to operands of type [NSManagedObject] and nil”
要检查核心数据库是否为空,您必须在要检查的实体上进行NSFetchRequest,并检查请求的结果是否为空.
您可以使用此功能进行检查:
func entityIsEmpty(entity: String) -> Bool { var appDel:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate var context = NSManagedObjectContext() var request = NSFetchRequest(entityName: entity) var error = NSErrorPointer() var results:NSArray? = self.context.executeFetchRequest(request,error: error) if let res = results { if res.count == 0 { return true } else { return false } } else { println("Error: \(error.debugDescription)") return true } }
或简化和更短的解决方案:(使用.countForFetchRequest)
func entityIsEmpty(entity: String) -> Bool { var appDel:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate var context = NSManagedObjectContext() var request = NSFetchRequest(entityName: entity) var error = NSErrorPointer() var results:NSArray? = self.context.executeFetchRequest(request,error: error) var count = context.countForFetchRequest(request,error: error) if error != nil { println("Error: \(error.debugDescription)") return true } else { if count == 0 { return true } else { return false } } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。