Я запрашиваю NSDictionary для значения. Поскольку у меня возникли проблемы, я распечатал объект. Это показывает мне следующее:
<CFString 0x5d33630 [0x26af380]>{contents = "myDictionaryItem"} = <CFNumber 0x5d58940 [0x26af380]>{value = +1286301600, type = kCFNumberSInt64Type}
Так что это 64-разрядное целое число со знаком. Поэтому я попытался извлечь значение, как это
NSString *myString = [NSString stringWithFormat:@"%qi", [myDictionary objectForKey:@"myDictionaryItem"]];
Это дает мне значение, но значение не совпадает со значением в словаре.
Я тоже пробовал это
long long my64bitsignedIntegerValue = (long long)[myDictionary objectForKey:@"myDictionaryItem"];
но я получаю предупреждение Cast from pointer to integer of different size
. Это не работает, потому что stringWithFormat
возвращает значение типа id
. Я нашел этот пост , где id
имеет тип UInt32
. 64-разрядное целое число со знаком не является 32-разрядным целым числом без знака, поэтому я получаю это предупреждение. Если я проигнорирую предупреждение, значение все равно будет неправильным.
Значение, которое я хотел бы получить, например, 1286301600. Целое число со знаком (от -2.147.483.648 до 2.147.483.647) должно делать то, что я хочу. Я не понимаю, почему Какао пытается сделать 64-битное целое число со знаком.
Как извлечь 64-разрядное целое число со знаком из словаря и использовать его в качестве переменной?