如何在Swift if语句中捕获0的返回值?
问题描述:
我有一个init
呼叫存在于我的数据库或者延迟加载我的种子数据,或加载数据:如何在Swift if语句中捕获0的返回值?
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()
叫?
答
选项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()
}
答
你可以添加一个where
条款:
if let savedPages = loadPages() where savedPages.count > 0 {
pages += savedPages
}
else {
createPages()
}
感谢队友!这工作完美。 – Trip