2009-07-22 8 views
0

Я работаю над Objective-C/Cocoa roguelike, потому что я всегда находил, что работа над игрой - лучший способ узнать о языке. Я довольно далеко зашел в игру, но у меня проблемы.Попытка захватить целое число из предварительно определенного списка p? ObjC/Cocoa

Каждый level.plist определяется с несколькими вещами, например, так:

<key>Save Location</key> 
<integer>0</integer> 

Он схватился, как это так, я хотел бы также сказать, что этот код все работает отлично:

NSObject* level = [mapDictionary_ objectForKey: kLevelNumberKey]; 

Однако, в моем NSLog -exploring, я обнаружил, что вместо того, чтобы хватать меня целым числом или даже полезным числом, это захватывает меня каким-то объектом, который возвращает правильное значение при NSLogged. Как я могу сделать это значение целым, чтобы я мог использовать его, как хотелось бы? Обратите внимание, что я использовал только NSObject*, потому что ничего не работало правильно. Если бы я использовал =(int), вместо этого я бы получил значение указателя или что-то еще (например, 1108608).

Я уверен, что это простое решение, и я благодарю вас заранее. Если вы не возражаете объяснить, что происходит, это было бы здорово. Мое понимание концепций прекрасное, лучше, чем большинство новичков, но меня всегда интересует именно то, что происходит. Какое использование было бы учить программированию, если бы я не знал, что происходит! Пожалуйста, не стесняйтесь советовать мне о других ситуациях, подобных этому, чтобы следить/быть готовым к тому же. Любые советы, действительно оцениваются, и будут идти к кому-то, кто намеревается кодировать в течение очень долгого времени. Я откладываю обучение слишком долго, мое единственное сожаление не начинается раньше.

Если по какой-либо причине вы заинтересованы в проверке своей игры до сих пор: Link Я сейчас в процессе реализации экономии состояния, так что уровни остаются, когда вы их оставили. Это, очевидно, только OS X. До сих пор я очень горжусь этим, но у меня много осталось. Элементы управления перечислены в приложении.

ответ

2

Значение NSNumber Объект. Вы можете получить его в качестве int с помощью -intValue method

+0

Это именно то, что я искал, спасибо так много. Я почти разочарован, что это было простое решение. Почему он хранится как NSNumber, а не только Int? – Sneakyness

+1

Потому что 'int' является примитивным типом C. NSDictionaries могут содержать только объекты (аналогично, параметр 'id' может быть только указателем на объект Objective-C). – Miles

+1

Контейнерные объекты (NSArray, NSDictionary, NSSet и т. Д. В Cocoa принимают только объекты, поэтому вам нужно обернуть ваши примитивы. Это в основном то, что NSNumber для. – Meltemi