如何使用swift检查核心数据是否为空.我试过这个方法:
var people = [NSManagedObject]()
if people == nil {
}
Run Code Online (Sandbox Code Playgroud)
但这会导致此错误
"binary operator'=='不能应用于[NSManagedObject]和nil类型的操作数"
Swift 3解决方案:
var isEmpty: Bool {
do {
let request = NSFetchRequest(entityName: YOUR_ENTITY)
let count = try context.count(for: request)
return count == 0
} catch {
return true
}
}
Run Code Online (Sandbox Code Playgroud)
根据 Dejan Skledar 的回答,我摆脱了一些编译器警告并将其应用于 Swift 2.0。
func entityIsEmpty(entity: String) -> Bool
{
let context = NSManagedObjectContext()
let request = NSFetchRequest(entityName: entity)
var results : NSArray?
do {
results = try context.executeFetchRequest(request) as! [NSManagedObject]
return results.count == 0
} catch let error as NSError {
// failure
print("Error: \(error.debugDescription)")
return true
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我不确定是否需要该if let res=results条款及其else条款。
要检查核心数据库是否为空,您必须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
}
}
Run Code Online (Sandbox Code Playgroud)
或更简单或更短的解决方案:(使用.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
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11993 次 |
| 最近记录: |