Преобразует ли NSString в NSData конечный байт?

Это ответ на этот неправильный ответ: qaru.site/info/11281/...

Преобразует ли NSString следующее:

NSString *str = @"teststring";
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];

затягивает конечный \0 байт, что означает

-[NSJSONSerialization:JSONObjectWithData:] 

а другие будут сбой, если вы не удалите его.

Ответы

Ответ 1

Нет, это не так. См. Этот пример:

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
                      @"v1", @"k1", 
                      @"v2", @"k2",
                      nil];
NSLog(@"dict=%@", dict);

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict options:0 error:nil];    

NSString *jsonAsString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

NSData *jsonDataFromString = [jsonAsString dataUsingEncoding:NSUTF8StringEncoding];

// DO NOT DO THIS:
// jsonDataFromString = [jsonDataFromString subdataWithRange:NSMakeRange(0, [jsonDataFromString length] - 1)];

NSDictionary *jsonObject = [NSJSONSerialization JSONObjectWithData:jsonDataFromString options:0 error:nil];
NSLog(@"jsonObject=%@", jsonObject);

Попробуйте, а затем попробуйте выполнить его с помощью строки "НЕ ДЕЛАЙТЕ ЭТО". Вы увидите, что проблем нет.