如何在 Swift if 语句中捕获 0 的 return?
How can you catch the return of 0 in a Swift if statement?
我有一个 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()
?
选项 1:
在loadPages()
中添加一个return
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:
在if let
之后添加where
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()
}
我有一个 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()
?
选项 1:
在loadPages()
中添加一个return
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:
在if let
where
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()
}