2017-01-07 14 views
-1

swift 3.0を使用して、deviceToken(データ)を文字列に変換しようとしていますが、正しい文字列を返していません。swift 3.0で正しいデバイストークンを変換できません

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { 

    let tokenString = deviceToken.reduce("") { string, byte in 
     string + String(format: "%02X", byte) 
    } 
    print("token: ", tokenString) 

} 

私が間違っていることを知っている人はいますか?

+0

あなたは何を得て、何を期待していますか? –

答えて

2

配列のようなData振る舞うのでスウィフト3では、それは少し簡単です:

let tokenString = deviceToken.map{ String(format: "%02X", $0) }.joined() 
+0

私が間違っていない限り、これはOPのコードと同じ結果を返します。このデータはSwift 3のシーケンスです。 –

0

あなたは、デバイストークンとしてこの方法を使用して変換することができますが、あなたはすべてのバイトを記述したバイトの形でUINT8の配列です。私はreplaceCharactersを使用するよう

let token = String(describing: deviceToken as CVarArg).replaceCharacters("<> ", toSeparator: "") 

私は文字列に拡張子を作成している()は、頻繁に

extension String { func replaceCharacters(_ characters: String, toSeparator: String) -> String { let characterSet = CharacterSet(charactersIn: characters) let components = self.components(separatedBy: characterSet) let result = components.joined(separator: toSeparator) return result } }

+0

これをチェック:https://postimg.org/image/mfl4rgymf/ – sanjeet

+0

@sanjeet updated –

0
var token = NSData.init(data: deviceToken).description 
    token = token.replacingOccurrences(of: "<", with: "") 
    token = token.replacingOccurrences(of: " ", with: "") 
    token = token.replacingOccurrences(of: ">", with: "") 
    token = String.init(describing: token) 

    print(token) 

希望これはあなたのサーバーに送信するための正確なdevicetokenを取得するのに役立ちます。

関連する問題