2015-11-10 3 views
1

Я знаю, что в C int не может быть nil, что заставляет меня задавать этот вопрос. Я использую API-интерфейс rails, который использует int для определенного свойства (рейтинга). Этот вызов API не может вернуть ничего для рейтинга, потому что он еще не имеет рейтинга. Я использую RestKit для сопоставления результатов вызова API.Проверьте, нет ли int в Obj-C

Возможно, мне нужно преобразовать int, переданный обратно из вызова API сервера, в NSNumber вместо int? Или я могу проверить int is nil some how?

+0

Вы отметили «Objective-C», и вы говорите, что используете Rails. Я что-то упускаю? Кроме того, я считаю, Obj-C определяется как «строгий надмножество C». – Arc676

+3

'int' не может быть' nil' в Obj-C. Только типы объектов (указатель) могут быть 'nil' (' null'). Если вы хотите иметь способ обработки 'nil', вам нужно использовать объекты (например,' NSNumber'). Это то, что делают большинство парсинга. – Sulthan

ответ

4

Вы должны использовать NSNumber, являющийся объектом, и поэтому может быть nil. Он может обертывать целые числа, плавающие точки и логические значения:

NSNumber *number = nil; 
if (!number) { 
    NSLog(@"Number not assigned"); 
} 

number = @1; 
if (number) { 
    NSLog(@"Number assigned: %d", [number intValue]); 
}