Как преобразовать двоичные данные в NSstring? - PullRequest
1 голос
/ 08 марта 2011

После записи с AVAudioRecorder полученный звуковой файл должен быть отправлен в веб-сервис. Данные файла должны быть закодированы в URL и скопированы в тело запроса POST. Формат записи kAudioFormatAppleLossless. В качестве первого шага, до кодирования URL, я попытался скопировать файл .caf в строку NSString, используя

NSStringEncoding encoding;
 NSString * filestring = [NSString 
                         stringWithContentsOfURL:self.audioRecorder.url 
                     usedEncoding:&encoding 
                         error:&error];

Я получил следующую ошибку:

Ошибка домена = NSCocoaErrorDomain Code = 264 "Операция не может быть завершена. (Ошибка какао 264.)"

Возвращена кодировка 0x5bab9f0, которой нет в списке значений, определенных для NSStringEncoding. Какую кодировку использует AVAudioRecorder при записи в файл? Каков наилучший способ преобразования двоичного файла в строку в кодировке URL?

1 Ответ

3 голосов
/ 08 марта 2011

Никогда. Используйте. NSString. За. Данные. Это. Не. Строка... Вместо этого используйте NSData, вам не нужно URLE кодировать его (потому что он «уже есть»).

Вы можете использовать это:

NSMutableData *postData = [[NSMutableData alloc] init];
[postData appendData:[@"--boundary\r\nContent-Disposition: form-data; name=\"myfile\"; filename=\"ad.gif\"\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:[NSData dataWithContentsOfURL:self.audioRecorder.url]];
[postData appendData:[@"\r\n--boundary--\r\n" dataUsingEncoding:NSUTF8StringEncoding]];

[myRequest setHTTPMethod:@"POST"]; // this you probably already did.
[myRequest setHTTPBody:postData];
...