我有一个init
调用延迟加载我的种子数据,或者加载我数据库中存在的数据:
if let savedPages = loadPages() {
pages += savedPages
} else {
createPages()
}
我的createPages()
方法未被调用,因为loadPages()
至少返回0 Results
。
func loadPages() -> [NSManagedObject]? {
// Load all those pages!
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let managedContext = appDelegate.managedObjectContext
let fetchRequest = NSFetchRequest(entityName: "Page")
do {
let results = try managedContext.executeFetchRequest(fetchRequest)
return results as? [NSManagedObject]
} catch let error as NSError {
print("Could not fetch \(error), \(error.userInfo)")
}
return nil
}
如何使我的else statement
捕获以便createPages()
被调用?
答案 0 :(得分:2)
选项1:
在loadPages()
if results.count == 0 { return nil }
func loadPages() -> [NSManagedObject]? {
// Load all those pages!
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let managedContext = appDelegate.managedObjectContext
let fetchRequest = NSFetchRequest(entityName: "Page")
do {
let results = try managedContext.executeFetchRequest(fetchRequest)
///
if results.count == 0 { return nil }
///
return results as? [NSManagedObject]
} catch let error as NSError {
print("Could not fetch \(error), \(error.userInfo)")
}
return nil
}
选项2:
在where
if let
if let savedPages = loadPages() where savedPages.count > 0 {
pages += savedPages
} else {
createPages()
}
答案 1 :(得分:0)
您可以添加where
子句:
if let savedPages = loadPages() where savedPages.count > 0 {
pages += savedPages
}
else {
createPages()
}