【发布时间】:2010-08-11 00:49:23
【问题描述】:
我在测试空(或空)文本属性时遇到了这个奇怪的问题。 这是我的设置:我得到了一个包含 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];
}
}
当我在这个界面中并在前两个字段中输入一些文本并“只是”选项卡remaning 字段和它的“完成”按钮时,这是我从 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
但是当我返回视图时,真正的问题开始了,在相同的前两个字段中输入一些文本,然后是“完成”按钮(不通过另一个字段,所以他们没有得到任何焦点)。这又是 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:]:尝试在 2' 处插入 nil 对象
所以,显而易见的问题是,首先isEqualtoString:nil 不起作用,其次,这个文本如何从 '' 变为 null 只是为了将焦点放在该字段上。
那么,有没有更好的方法来测试空字段?
谢谢!
【问题讨论】:
-
如果你使用的是 UITextView 那么stackoverflow.com/a/8238742/1660139
-
如果你使用的是 UITextView 那么这个链接会帮助stackoverflow.com/a/8238742/1660139
标签: iphone objective-c xcode uitextfield