Я получил эту странную проблему при тестировании пустого (или нулевого) свойства текста.Вот мои настройки: у меня есть представление с 6 текстовыми полями в нем, и вот код, который я использую для перехода по этим полям (загружается в массив NSMutable) ...
NSEnumerator *portsEnumerator = [appliancePorts objectEnumerator];
UITextField *tmpField;
newSite.port = [NSMutableArray array];
while (tmpField =[portsEnumerator nextObject]) {
NSLog(@"value:%@",tmpField.text);
if (![tmpField.text isEqualToString:nil]) {
[newSite.port addObject:(NSString *)tmpField.text];
}
}
Когда я в этом интерфейсеи введите некоторый текст в первые два поля и на вкладке «просто» оставшееся поле и нажмите кнопку «Готово», вот что я получил из вывода GDB:
2010-08-10 20:16:54.489 myApp[4883:207] value:Value 1
2010-08-10 20:16:58.115 myApp[4883:207] value:Value 2
2010-08-10 20:17:02.002 myApp[4883:207] value:
2010-08-10 20:17:13.034 myApp[4883:207] value:
2010-08-10 20:17:15.854 myApp[4883:207] value:
2010-08-10 20:17:17.762 myApp[4883:207] value:
Я знаю, что если я проверю на пустую строкуэто должно работать, потому что свойство text при выгрузке на консоль показывает это:
UITextField: 0x5d552a0; frame = (20 8; 260 30); text = ''; clipsToBounds = YES; opaque = NO; tag = 1; layer = CALayer: 0x5d54f20
Но проблема REAL начинается, когда я возвращаюсь назад к представлению, введите некоторый текст в те же первые два поля и введите «Done»."кнопка сразу после (не проходит через другое поле, поэтому они не получают никакого фокуса).Это снова вывод GDB ...
2010-08-10 20:23:27.902 myApp[4914:207] value:Value 1
2010-08-10 20:23:31.739 myApp[4914:207] value:Value 2
2010-08-10 20:23:34.523 myApp[4914:207] value:(null)
2010-08-10 20: 23: 56.443 myApp [4914: 207] * Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: '* - [NSMutableArray insertObject: atIndex:]: попытка вставить объект nil в 2'
Итак, очевидные проблемы в том, что сначала isEqualtoString:nil
не работаети, во-вторых, как этот текст может измениться с '' на ноль, если поставить акцент на поле.
Итак, есть ли лучший способ проверить пустое поле?
Спасибо!