如何在Swift if语句中捕获0的返回值?

时间:2016-03-15 11:51:09

标签: ios swift syntax seeding

我有一个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()被调用?

2 个答案:

答案 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()
}