Замена материала в строке JSON - PullRequest
0 голосов
/ 28 октября 2018

Почему я получаю сообщение об ошибке:

NSString *jsonString = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSLog(@"jsonRoster unmasked: %@", jsonString);
NSString *maskedString = [self maskJSON:jsonString withMultipleElementStartString:@"###multipleElementsBegin###" andMultipleEndString:@"###multipleElementsEnd###" andSingleElementStartString:@"###elementBegin###" andSingleElementEndString:@"###elementEnd###"];
NSLog(@"jsonRoster masked: %@", maskedString);

Вот ошибка:

Завершение приложения из-за необработанного исключения 'NSInvalidArgumentException', причина: '- [__NSDictionaryI stringByReplacingOccurferencesOfString: withString:]: нераспознанный селектор, отправленный экземпляру 0x600002932400 '

Но почему строка по-прежнему является словарем?

1 Ответ

0 голосов
/ 28 октября 2018

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

Редактировать Чтобы получить NSString, вы можете использовать его initWithData:encoding: метод.

...