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

2016-09-23
26 Views

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

You may be interested

모바일 앱 아키텍처
Swift
shares15 views
Swift
shares15 views

모바일 앱 아키텍처

MJ Kim - 4월 22, 2017

이 내용은 나름대로 개발해본 내용을 토대로 정리해본 모바일 앱 아키텍처에 대한 내용이다. 이를 정리한 이유는 오래된 아키텍처부터 최근 아키텍처까지 정리해보고…

시간차를 얻는 Date Extension
Swift 3.0
shares6 views
Swift 3.0
shares6 views

시간차를 얻는 Date Extension

MJ Kim - 4월 12, 2017

사용자가 남길 내용에 대한 시간표시를 할 때 일정한 시간차를 표현해주는 경우가 있어 이에 대한 Date Extention을 정리해 보았다. [crayon-58fcc05ae1292142671585/]  

Swift 3.1에서 없어진 문법 정리
Swift 3.0
shares34 views
Swift 3.0
shares34 views

Swift 3.1에서 없어진 문법 정리

MJ Kim - 3월 31, 2017

Swift언어는 무엇인가 나올때마다 없어지는 것들이 있어, Swift 3.1에서 컴파일할 수 없게 된 문법내용을 정리했다. switch문을 사용하여 enum에서 protocol을 여러가지 패턴으로…