Objective C, как проверить, является ли строка пустой

ТАКИМ ОБРАЗОМ, я хочу проверить, чтобы видеть если объект в моем массиве [clientDataArray objectForKey:@"ClientCompany"] nil.

    temp = [clientDataArray objectForKey:@"ClientCompany"];
    if (temp != [NSNull null]) infofieldCompany.text = temp;

До сих пор я смог достигнуть этого через вышеупомянутый код, но он действительно дает мне предупреждения

  • предупреждение: NSArray может не ответить на -objectForKey:
  • предупреждение: сравнение отличных типов Objective C struct NSNull * и struct NSString * испытывает недостаток в броске

Мой главный интерес является вторым предупреждением, но первое предупреждение также интересует меня. Как я должен адаптировать мой выше кода?

13
задан EXC_BAD_ACCESS 13 February 2013 в 05:39
поделиться

4 ответа

Ваше первое предупреждение выглядит так, как будто вы пытаетесь вызвать objectForKey на NSArray. Что не получится, так как у NSArray нет метода objectForKey.

Что касается второго предупреждения, вы можете просто сравнить напрямую с nil, т.е.:

if (temp != nil)

или, поскольку nil эквивалентен 0, вы также можете просто сделать:

if (temp)
20
ответ дан 1 December 2019 в 17:33
поделиться

В обоих ответах, которые были даны ранее, пропущен фундаментальный момент: вы не можете поставить nil в массив, поэтому вы никогда не получите nil из массива. Использование NSNull в качестве заполнителя в массиве является правильным, однако ваша переменная temp не может быть объявлена ​​как NSString * , хотя, возможно, это не так. Используйте либо NSObject * , либо id в качестве типа переменной, чтобы подавить предупреждение о сравнении.

14
ответ дан 1 December 2019 в 17:33
поделиться

Я думаю, что проблема (я имею в виду второе предупреждение) в том, что вы сравниваете объект NSString, которому можно присвоить значение null, с объектом NSNull.

Вы пробовали обычный способ Си для проверки наличия null?

if(temp) {
// It's not null, do something.
}

Я не уверен на 100% в этом, но вы можете попробовать. Если да, извините, что не смог предоставить более полезную информацию.

Удачи!

0
ответ дан 1 December 2019 в 17:33
поделиться

Синглтон NSNull можно использовать для построения "чередующихся" массивов типа obj0, obj1, obj2, NSNull, obj3, NSNull, ..., nil.

предупреждение: 'NSArray' может не отвечать на'-objectForKey:'

NSArray не реализует objectForKey.
Ваш код аварийно завершается во время выполнения (если clientDataArray был выделен и инициализирован). Вы можете получить доступ к элементам массива по индексу (objectAtIndex:).
Если вам нужно связать объекты с ключами, посмотрите на NSDictionary.

0
ответ дан 1 December 2019 в 17:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: