строка байтов как данные в Swift 4 - PullRequest
0 голосов
/ 21 мая 2018

У меня есть строка, которая выглядит следующим образом:

ID3\x04\x00\x00\x00\x00\x00#TSSE\x00\x00\x00\x0f\x00\x00\x03Lavf57.71.100\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xf3\xc4\x00\x1a\xa2\x95\xf8\x15X\x10\x00\x16\xa0V\x18\xbb\x18\x84\x99i\x96|\xc60P\xdc\xe5\x03\xf1\xe6p\xe2Y}\xdc\xb8\xbe=\xfd\xe7OOo:\x10\x84S\x9es\xd0\x84#|\xe79\xce\xdf\xf4!\x1aw\xa9\xces\xd1\xa4$\xe79\xdf\xc8\xdf\xces\xfc\x84!\t\x90\x8d\xa9\xe8s\xd0\x8d\xff\xffS ...

Как я могу преобразовать это в данные в Swift?

Я пытался использовать str as! Dataно это просто выдает ошибку

Строка приходит в качестве одного из возвращаемых значений в запрос на публикацию на мой сервер

Код

Alamofire.request(serverURL, method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: nil).responseJSON { (response) in
            let responseData = (response.result.value! as! [String: Any])
            var audio = responseData["audio"]!
}

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Строка, которую вы предоставляете, является метаданными MP3 , и я предполагаю, что это часть файла MP3 большего размера.Предполагая, что вы не можете извлечь, загрузив файл непосредственно на ваш компьютер или используя удаленный URL, вы можете преобразовать текстовую строку в данные следующим образом:

let data = str.data(using: .utf8)

Примечание: Это возвращает необязательное значение, поэтому вам нужно это обработать.

0 голосов
/ 21 мая 2018

Alamofire документы говорят, что response.result должен быть сериализован в формате JSON.Вы хотите получить доступ к данным через response.data?

if let json = response.result.value {
    print("JSON: \(json)") // serialized json response
}

if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) {
    print("Data: \(utf8Text)") // original server data as UTF8 string
}
...