如何在 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()
}