ТАКИМ ОБРАЗОМ, я хочу проверить, чтобы видеть если объект в моем массиве [clientDataArray objectForKey:@"ClientCompany"]
nil
.
temp = [clientDataArray objectForKey:@"ClientCompany"];
if (temp != [NSNull null]) infofieldCompany.text = temp;
До сих пор я смог достигнуть этого через вышеупомянутый код, но он действительно дает мне предупреждения
NSArray
может не ответить на -objectForKey:
struct NSNull *
и struct NSString *
испытывает недостаток в броскеМой главный интерес является вторым предупреждением, но первое предупреждение также интересует меня. Как я должен адаптировать мой выше кода?
Ваше первое предупреждение выглядит так, как будто вы пытаетесь вызвать objectForKey
на NSArray
. Что не получится, так как у NSArray
нет метода objectForKey
.
Что касается второго предупреждения, вы можете просто сравнить напрямую с nil, т.е.:
if (temp != nil)
или, поскольку nil эквивалентен 0, вы также можете просто сделать:
if (temp)
В обоих ответах, которые были даны ранее, пропущен фундаментальный момент: вы не можете поставить nil
в массив, поэтому вы никогда не получите nil
из массива. Использование NSNull
в качестве заполнителя в массиве является правильным, однако ваша переменная temp
не может быть объявлена как NSString *
, хотя, возможно, это не так. Используйте либо NSObject *
, либо id
в качестве типа переменной, чтобы подавить предупреждение о сравнении.
Я думаю, что проблема (я имею в виду второе предупреждение) в том, что вы сравниваете объект NSString, которому можно присвоить значение null, с объектом NSNull.
Вы пробовали обычный способ Си для проверки наличия null?
if(temp) {
// It's not null, do something.
}
Я не уверен на 100% в этом, но вы можете попробовать. Если да, извините, что не смог предоставить более полезную информацию.
Удачи!
Синглтон NSNull
можно использовать для построения "чередующихся" массивов типа obj0, obj1, obj2, NSNull, obj3, NSNull, ..., nil.
предупреждение: 'NSArray' может не отвечать на'-objectForKey:'
NSArray не реализует objectForKey
.
Ваш код аварийно завершается во время выполнения (если clientDataArray
был выделен и инициализирован).
Вы можете получить доступ к элементам массива по индексу (objectAtIndex:).
Если вам нужно связать объекты с ключами, посмотрите на NSDictionary.