Obj-C определяет целочисленные значения с помощью isKindOfClass - PullRequest
3 голосов
/ 30 августа 2009

Мне нужно проверить тип каждого элемента в массиве ...

for(id obj in items) {
    if([obj isKindOfClass:[NSString class]]) {
       //handle string case
    } else if([obj isKindOfClass:[NSInteger class]]) {  //THIS LINE GIVES ERROR
       //handle int case
    }
}

Конечно, NSInteger это просто псевдоним для int, так как я могу проверить это во время выполнения?

1 Ответ

4 голосов
/ 30 августа 2009

Вы не можете хранить NSInteger в NSArray, так как это не объект. Если вы храните числа в вашем массиве, это, скорее всего, экземпляры NSNumber, поэтому вы должны проверить:

if ([obj isKindOfClass:[NSNumber class]]) { ... }

iPhone Developer Tips дает хорошее резюме разницы между NSInteger и NSNumber.

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