İOS 13'te description
bu yüzden bunu kullanın
let deviceTokenString = deviceToken.map { String(format: "%02x", $0) }.joined()
Açıklık için, bunu yıkalım ve her bir parçayı açıklayalım:
Harita yöntemi, bir dizinin her elemanı üzerinde çalışır. Veri Swift'teki bir bayt dizisi olduğundan, geçirilen kapatma, DeviceToken'deki her bayt için değerlendirilir. Dize (biçim :) başlatıcısı, bayt / 8 bit tamsayısının sıfır dolgulu, 2 basamaklı onaltılık bir gösterimini oluşturmak için verilerdeki her baytı (anonim parametre $ 0 ile temsil edilen)% 02x biçim belirticisini kullanarak değerlendirir. Map yöntemi tarafından oluşturulan her bayt gösterimini topladıktan sonra, join () her öğeyi tek bir dizeye birleştirir.
PS, açıklama kullanmaz, iOS 12 ve iOS 13'te farklı dize verir ve gelecekteki kapsama göre güvenli değildir. Geliştiriciler, bir nesnenin açıklaması için belirli bir biçime güvenmemeliydi.
// iOS 12
(deviceToken as NSData).description // "<965b251c 6cb1926d e3cb366f dfb16ddd e6b9086a 8a3cac9e 5f857679 376eab7C>"
// iOS 13
(deviceToken as NSData).description // "{length = 32, bytes = 0x965b251c 6cb1926d e3cb366f dfb16ddd ... 5f857679 376eab7c }"
Daha fazla bilgi için Bunu okuyun .
NSLog
, baskılar bu birnewDeviceToken
?