ios - 基于缓存值可用性的运行方法

标签 ios swift asynchronous request

我有以下情况:

if UserDefaults.standard.bool(forKey: "foo") == nil {
     asyncRequest() { foo in
         myMethod(foo)
     }
} else {
      myMethod(foo)
}

我基本上是在检查目前是否缓存了 foo 变量。如果没有,我从服务器获取它,但如果有,我直接调用该方法。

是否有更好的做法可以避免在此处使用 if-else 语句? (例如,允许我仅调用 myMethod(foo) 一次)

最佳答案

这似乎是正确的,请注意 bool(forKey:) 将始终返回 bool,而不是可选值。为此,您应该使用 value(forKey:)。你也可以做这样的事情

var foo: Bool? {
    return UserDefaults.standard.value(forKey: "foo") as? Bool
}

func assignValue() {
    guard let foo = foo else {
        // your async call here
        return
    }
    myMethod(foo)

}

关于ios - 基于缓存值可用性的运行方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49468665/

相关文章:

ios - 登台环境中的 SSL 请求失败

iPhone 应用程序崩溃与 [NSObject(NSObject) doesNotRecognizeSelector :]

javascript - 我如何使用 Spies 测试我的异步 jasmine/nodejs/promise 代码

ios - 永远不会出现确认应用内购买的警报

c++ - std::async 的非阻塞调用:这个版本有多危险?

C# 异步方法仍然挂起 UI

ios - 打开项目时链接器命令失败,退出代码为 1(使用 -v 查看调用)

ios - cancelPreviousPerformRequests 似乎在 Swift 3.0 中不起作用

arrays - Swift 字典到数组来填充 pickerView

ios - 表格 View 中重复复选标记