data array swift string

array - Swift 3.0 Datos a la cadena?



swift string to data (9)

Aquí está mi extensión de datos. agregue esto y puede llamar a data.ToString ()

import Foundation extension Data { func toString() -> String? { return String(data: self, encoding: .utf8) } }

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

Quiero deviceToken para encadenar

pero:

let str = String.init(data: deviceToken, encoding: .utf8)

str es nil

swift 3.0

¿Cómo puedo dejar que los data string ?

¿Te registras para recibir notificaciones push en Xcode 8 / Swift 3.0? no funciona y la respuesta es hace unos meses, lo había intentado:

e imprimir:


Encontré la manera de hacerlo. Necesita convertir Data a NSData :

let characterSet = CharacterSet(charactersIn: "<>") let nsdataStr = NSData.init(data: deviceToken) let deviceStr = nsdataStr.description.trimmingCharacters(in: characterSet).replacingOccurrences(of: " ", with: "") print(deviceStr)


Esto es mucho más fácil en Swift 3 y más tarde usando reduce:

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { let token = deviceToken.reduce("") { $0 + String(format: "%02x", $1) } DispatchQueue.global(qos: .background).async { let url = URL(string: "https://example.com/myApp/apns.php")! var request = URLRequest(url: url) request.addValue("application/json", forHTTPHeaderField: "Content-Type") request.httpMethod = "POST" request.httpBody = try! JSONSerialization.data(withJSONObject: [ "token" : token, "ios" : UIDevice.current.systemVersion, "languages" : Locale.preferredLanguages.joined(separator: ", ") ]) URLSession.shared.dataTask(with: request).resume() } }


Para ampliar la respuesta de weijia.wang:

extension Data { func hexString() -> String { let nsdataStr = NSData.init(data: self) return nsdataStr.description.trimmingCharacters(in: CharacterSet(charactersIn: "<>")).replacingOccurrences(of: " ", with: "") } }

deviceToken.hexString() con deviceToken.hexString()



Si sus datos están codificados en base64.

if ( dataObj != nil ) { let encryptedDataText = dataObj!.base64EncodedString(options: NSData.Base64EncodingOptions()) NSLog("Encrypted with pubkey: %@", encryptedDataText) }


Versión Swift 4 de la respuesta de 4redwings:

let testString = "This is a test string" let somedata = testString.data(using: String.Encoding.utf8) let backToString = String(data: somedata!, encoding: String.Encoding.utf8)


Vine buscando la respuesta a la pregunta de Swift 3 Data to String y nunca obtuve una buena respuesta. Después de perder el tiempo, se me ocurrió esto:

var testString = "This is a test string" var somedata = testString.data(using: String.Encoding.utf8) var backToString = String(data: somedata!, encoding: String.Encoding.utf8) as String!


let str = deviceToken.map { String(format: "%02hhx", $0) }.joined()