У меня возникла странная проблема с ответом от api. В connectionDidFinishLoading при регистрации ответа в виде строки [NSString stringWithUTF8String:[self.response bytes]]
строка иногда записывается правильно, иногда имеет значение NULL, а в других случаях - правильный ответ со случайными символами, добавленными в конце.Xcode NSURLConnection NSMutableData appdendData работает только иногда
В didReceiveData ответ прекрасен, но проблема возникает после использования appendData. В didReceiveData я могу проиллюстрировать эту проблему так:
// This is always 0
NSLog(@"data length is %i", [data length]);
// This is always the correct response string sent from the api
NSLog(@"data string is %@", [NSString stringWithUTF8String:[data bytes]]);
NSMutableData *foo = [[NSMutableData alloc] init];
[foo appendData:data];
// This is always 8
NSLog(@"foo length is %i", [foo length]);
// This is only sometimes the correct response string!
NSLog(@"foo string is %@", [NSString stringWithUTF8String:[foo bytes]]);
[foo release];
foo = nil;
Я видел пару других вопросов на SO о подобных сумасшедших проблем с appendData, но они, кажется, были, так как переменная, добавленными была равна нулю. Это показывает, что я ясно объявил о своем NSMutableData foo, но он все еще не корректно установлен.
stringWithUTF8String будет считать, что байты находятся в utf8. что может не дать правильных результатов. Ответ Фабиана Крейзера - лучший подход. – Mohammad