2013-05-10 3 views
3

Я получаю значение объекта от сервера как нулевое значение, когда NSlog этот объект. Я хочу его идентифицировать в if-else. Как я могу проверить его, потому что nil ссылается на неизвестный объект, который не означает NULL. И я тоже не могу сравнивать его с нолем.Как проверить нулевое значение объекта в решении для Objective C

Как я могу определить, что это значение является NULL, у меня есть сбой в этой точке. Я пробовал @try - @catch блок тоже, но все шло напрасно.

Любое предложение по этой проблеме.

+2

Try: если ([yourObject IsEqual: [NSNull нуль]]) – Anil

ответ

3

Как уже отмечалось, существует много видов «нуль» под Cocoa/Objective C. Но дальше одно следует отметить, что [object isKindOfClass:[NSNull class]] является бесцельно комплекс с [NSNull null] документирован как синглтон, поэтому вы можете просто проверить равенство указателя. См Topics for Cocoa: Using Null

Так используйте этот: -

if (title == (id)[NSNull null] || title.length == 0) title = @"Something"; 

Обратите внимание, как вы можете использовать тот факт, что даже если название отсутствует, title.length будет возвращать 0/ноль/ложь, то есть 0 в этом случае, так у вас нет специального случая. Это то, к чему люди, которые не знакомы с Objective C, не могут привыкнуть, особенно приступая к другим языкам, на которых вызовы сообщений/методов при нулевом сбое.

Если вы хотите в деталях, что разница между нулевым, Нилу и нулем, вы можете проверить эту статью What is the difference between nil, Nil and null.

3

Вы можете попробовать следующий код для проверки NULL значений с сервера:

if (nil == str || NSNull.null == (id)str) { 

     //Object has Null value 

    } 
else{ 
      // Object has some value 
} 

ул является строковым значением, которое содержит значение сервера. Это может вам помочь.

+0

Это правильно, потому что 'NSNull 'определяет одноэлементный объект. (Но использование точечного синтаксиса для не-свойств - это то, что многие люди недовольны :-) –

3

Лучший подход:

if([yourObject isKindOfClass:[NSNull null]]) 
{ 
    // yourObject is null. 
} 
else 
{ 
    // yourObject is not null. 
} 
+0

Обратите внимание, что 'NSNull' определяет объект * singleton *, поэтому вы можете фактически сравнить с' == 'или' isEqual', поэтому другие ответы также верны. –

Смежные вопросы