target-c none массив nil выглядит как nil в операторе if / else - PullRequest
0 голосов
/ 25 сентября 2011

Следующий код не работает должным образом. Я устанавливаю массив после создания представления, но перед отображением. Я использовал NSLog, чтобы проверить, что массив установлен, но if / else видит массив пустым.

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    NSLog(@"Planlist is nil %d / has %d objects", (planListArr == nil), [planListArr count]);

    if (planListArr == nil || [planListArr count] == 0) { ... }
    else {
        NSLog(@"Planlist is empty");
    }
}  

Журналы

2011-09-25 13:54:39.764 myVI[2938:13303] Planlist is nil 0 / has 8 objects
2011-09-25 13:54:39.765 myVI[2938:13303] Planlist is empty

PlanList определяется как

NSArray *planListArr;

@property (nonatomic, retain) NSArray *planListArr;

Ответы [ 2 ]

4 голосов
/ 25 сентября 2011
if (planListArr == nil || [planListArr count] == 0) { ... }
else {
    NSLog(@"Planlist is empty");
}

Расширено, это становится:

if (planListArr == nil || [planListArr count] == 0) {
    ...
} else {
    NSLog(@"Planlist is empty");
}

Так что, по сути, похоже, что ваше утверждение NSLog() находится в неправильной ветке.

2 голосов
/ 25 сентября 2011
(!plainListArray && [plainListArray count]>0) ? NSLog(@"PlainList array has %d items",[plainListArray count] : NSLog(@"Oops! Array is not been initialized or it has no items");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...