我的项目(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()
中的变量?
答案 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
内向应用程序的其他部分触发通知,或者在您运行完函数后在应用程序末尾运行获取令牌,最好还是存储令牌或与单例共享令牌,以便在任何地方轻松访问