NSData или NSAttributedString с SBJSON - PullRequest
       24

NSData или NSAttributedString с SBJSON

1 голос
/ 02 января 2012

Я использую SBJSON для преобразования моего NSDictionary в строку JSON в моем приложении iOS.

, когда мой словарь содержит NSAttributedString или NSData, SBJSON не может сгенерировать строкупредставление.

В случае NSAttributedString возникла ошибка:

-JSONRepresentation не удалось.Трассировка ошибки: ("Ошибка Domain = org.brautaset.JSON.ErrorDomain Code = 1 \" Сериализация JSON не поддерживается для NSConcreteMutableAttributedString \

Incase NSData, ошибка:

-JSONRepresentation не удалось. Трассировка ошибки: ("Ошибка Domain = org.brautaset.JSON.ErrorDomain Code = 1 \" Сериализация JSON не поддерживается для NSConcreteMutableData \ "UserInfo = 0x7ed2560 {NSLocalizedDescription = Сериализация JSON не поддерживается для NSConDatatableu"

Решить хотя бы одну из двух проблем будет очень полезно. Пожалуйста, помогите.

Спасибо Roshit

Ответы [ 2 ]

2 голосов
/ 03 января 2012

JSON не имеет какого-либо типа данных, чтобы делать то, что вы хотите, но вы можете преобразовать NSData в строку в кодировке Base64.Это можно сделать автоматически с помощью категории в NSData, которая реализует метод -proxyForJson.Проблема в том, когда вам нужно преобразовать его обратно в NSData на другом конце.Если ключ известен, то вы можете просто Base64 декодировать этот ключ.Но если часть данных может быть для любого ключа, это немного сложнее.Вам нужно как-то структурировать свои данные, чтобы вы могли определить, какие строки должны быть декодированы в Base64.

1 голос
/ 04 января 2012

Нельзя передать объект NSData.Решение проблемы: просто используйте следующую строку (измените ответ на ваш объект nsdata) и используйте эту строку в качестве значения.

NSString *json_string = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];

Вы также не можете передать NSAttributedString в качестве значения.Вы должны изменить NSAttributedString на NSString.Пожалуйста, проверьте OHAttributedLabel lib для получения дополнительной информации.

...