Swifter {Swift Developer}

메뉴

Swift 3.0 푸시알림용 Device Token Data형 16진수문자열 변환하기

UIApplicationDelegate의 application(_:didRegisterForRemoteNotificationsWithDeviceToken:)에서 나오는 deviceToken은 Data형(이전까지 NSData형)이지만 그것을 16진수 문자열로 변환하는 방법에 대해 정리해본다.

이전까지는 아래와 같은 형태로 작성해왔다.

그렇지만 이번에 정식으로 출시된 Xcode 8, Swift 3.0기반으로 업그레이드해서 실행하면 결과가 이상하게 나온다.

그렇다면 이를 Swift 3.0에 대응해보자.

1) map에서 deviceToken요소를 문자열로 변환하고 join처리

2) reduce 사용

map, join대신 reduce처리를 해보았다. 좀더 이게 좋다고 생각된다.

3) NSData 캐스팅

Swift 3.0에서는 NSData형의 deviceToken이 Data형으로 브릿지되어 deviceToken.description결과가 변해버렸기 때문에 캐스트해서 NSData를 하면 알맞은 결과를 얻을 수 있다.

4) UInt8 -> 16진수 문자열로 변환하기

위에서 처리하는 것에는 UInt8에서 16진수 문자열로 변환처리가 있지만 그것에 대해서 좋은 방법을 생각해 보았다.

Data형의 UInt8형 요소를 dataElement해 보았다.

5) String의 int(format:)이니셜라이저 이용

형지정자를 사용하는 방법이다.

6) String의 init(_:radix:uppercase:)이니셜라이저 이용

dataElement가 15이하일 때 한자리가 되기 때문에 이를 고려한 것도 필요하다.

이를 모두 정리해보면

참고로 stackoverflow.com을 참고했다.

 

Facebook Comments

카테고리:   Swift 3.0

댓글

죄송하지만 댓글은 닫혀 있습니다.