我正在尝试将设备 token 保存到NSUserDefaults,但我做不到。

我的代码:

func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
    var currentToken=preferences.stringForKey(pushTokenKey)
    if currentToken != deviceToken {
        var dataString = NSString(data: deviceToken, encoding:NSUTF8StringEncoding) as String?
        self.preferences.setValue(dataString, forKey: pushTokenKey)
        self.preferences.synchronize()
    }
}

您可以看到我正在比较 token ,如果它们不相同,我将对其进行更新。但是我猜它总是保存为nil,因为deviceTokenNSData

我该如何解决这个问题?

最佳答案

您得到nil的原因是因为它无法将NSData转换为NSString

通过使用deviceToken.description,您将获得字符串 token 。

var currentToken=preferences.stringForKey(pushTokenKey)

if currentToken != deviceToken.description { // Here you were comparing  String and NSData ?? :S
    var dataString = deviceToken.description
    self.preferences.setValue(dataString, forKey: pushTokenKey)
    self.preferences.synchronize()
}

关于ios - 将deviceToken保存到NSUserDefaults,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30174660/

10-13 03:48