Вопрос

Мне известно, что этот вопрос задавался несколько раз, но я не смог найти точного ответа, который наилучшим образом соответствовал бы моей ситуации.

Я хочу, чтобы пользователь мог выбрать изображение из библиотеки, а затем это изображение преобразуется в тип NSData. Затем у меня возникает требование вызвать веб-сервис .NET C # через HTTP get, поэтому в идеале нужно, чтобы полученная строка была закодирована в UTF8.

Это то, что я имею до сих пор:

NSData *dataObj = UIImageJPEGRepresentation(selectedImage, 1.0);
    [picker dismissModalViewControllerAnimated:YES];
    NSString *content =  [[NSString alloc] initWithData:dataObj encoding:NSUTF8StringEncoding];
    NSLog(@"%@", content);

Оператор NSLog просто производит вывод как:

2009-11-29 14:13:33.937 TestUpload2[5735:207] (null)

Очевидно, это не то, чего я надеялся достичь, поэтому любая помощь будет отличной.

С уважением

Это было полезно?

Решение

Вы не можете создать строку в кодировке UTF-8 из любых произвольных двоичных данных - на самом деле эти данные должны быть в кодировке UTF-8, а данные для вашего изображения JPEG, очевидно, нет. Ваши двоичные данные не представляют собой строку, поэтому вы не можете напрямую создать из нее строку - - [NSString initWithData: encoding:] не работает надлежащим образом в вашем случае.

Предполагая, что вы используете NSURLConnection (хотя подобное утверждение должно быть верным и для других методов), вы создадите NSMutableURLRequest и будете использовать -setHTTPBody: , в который вам нужно передать объект NSData. Я не понимаю, почему вы используете здесь метод GET, поскольку похоже, что вы собираетесь загружать эти данные изображения в свой веб-сервис - вам следует использовать POST.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top