Swift:从另一个函数获取函数中的变量

时间:2018-07-16 16:04:31

标签: ios swift xcode swift3

我的项目(Xcode 9.4.1 (9F2000)Swift 3)中有以下代码:

func application(_ application: UIApplication,
                didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
    let tokenParts = deviceToken.map { data -> String in
        return String(format: "%02.2hhx", data)
    }
    let token = tokenParts.joined()
    print("Device Token: \(token)\n")
}
func httpRequest() {
    let postString = "token=\(token)"
}

这将打印用于推送通知的设备令牌。

但是对于let postString = "token=\(token)",我得到了:

  

使用未解决的标识符“令牌”

我想我无法从另一个函数访问变量。

如何从另一个函数访问函数httpRequest()中的变量?

1 个答案:

答案 0 :(得分:1)

您需要为此创建一个变量

var myToken:String?

//

  func application(_ application: UIApplication,
                didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
    let tokenParts = deviceToken.map { data -> String in
        return String(format: "%02.2hhx", data)
    }
    let token = tokenParts.joined()
    self.myToken = token
    print("Device Token: \(token)\n")
}
func httpRequest() {
    if let postString = myToken {
    }
}

注意::在收到令牌之前,不要发起任何请求,因此可以在didRegisterForRemoteNotificationsWithDeviceToken内向应用程序的其他部分触发通知,或者在您运行完函数后在应用程序末尾运行获取令牌,最好还是存储令牌或与单例共享令牌,以便在任何地方轻松访问