Хранение длинных длинных значений в Objective C - PullRequest
2 голосов
/ 15 октября 2010

Я работаю с API, который возвращает словарь JSON.Одним из ключей является «Вариант хэша», и соответствующие данные представляют собой целое число, например: -7331108254952843887 или 6209894088655053576.Я сериализирую эти данные с помощью NSCoder, и я не уверен, какой метод encodeValue использовать.Не существует encodeLongLongValue: forKey :.

Также, делая NSLog (@ "% @", returnDictionary);отображает всю структуру словаря, но использование objectForKey: не работает, поскольку соответствующее значение для ключа Variant Hash не является объектом.

Как получить данные из словаря и как хранитьэто с NSCoder?

Спасибо за вашу помощь.

Ответы [ 3 ]

4 голосов
/ 15 октября 2010

Не существует encodeLongLongValue: forKey:

Нет, но есть encodeInt64: forKey: , которое должно сработать.

2 голосов
/ 15 октября 2010

В зависимости от используемого вами синтаксического анализатора JSON номер сохраняется в словаре как NSNumber, NSDecimalNumber, NSString или NSValue.NSNumber (или NSDecimalNumber, который является подклассом), вероятно, наиболее вероятен, но я бы проверил документацию или код вашего анализатора.

Если это так, вы получите значение как таковое.

NSNumber *numberValue = [myDictionary objectForKey:myKey];
long long longValue = [numberValue longLongValue];

Я бы, вероятно, реализовал некоторую проверку типов в этом коде, просто чтобы быть в безопасности.

NSNumber соответствует NSCoding, так что вы можете использовать экземпляр numberValue, чтобы также выполнить кодировку.

0 голосов
/ 15 октября 2010

Если скорость не является вашей критической проблемой, просто относитесь к ней как к строке и используйте NSString*.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...