2017-01-07 13 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) 

} 

내가 뭘 잘못하고 있는지 알아?

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

무엇을 얻고 무엇을 기대합니까? –

답변

2

는 스위프트 3에서는 조금 쉽게 . 내가 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

내가 실수하지 않는 한, 이는 스위프트 3의 시퀀스 인 데이터를 사용하는 OP의 코드와 정확히 같은 결과를 제공합니다. –

0

당신은 장치 토큰으로이 방법을 사용하여 변환 할 수 있습니다 바이트의 형태로 UINT8의 배열은 당신이 모든 바이트를 설명 있습니다 배열과 같은 Data 동작합니다 때문에

+0

다음을 확인하십시오 : https://postimg.org/image/mfl4rgymf/ – sanjeet

+0

@sanjeet 업데이트 –

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을하는 데 도움이 될 것입니다.