当我尝试在文本字段中输入文本时出现以下错误:
'NSInvalidArgumentException',原因:'-[NSNull 长度]:无法识别的选择器发送到实例
当我尝试在文本字段中输入一些文本时会发生这种情况。我正在视图控制器内的一个空视图上对此进行测试。我为文本字段创建了 IBOutlet 并将其委托设置为我的控制器。不知道我错过了什么。
更新 所以当我通过添加一个新的视图控制器和一个文本字段在新的故事板上尝试这个时,它不会抛出这个异常。也许这个故事板有问题?
当我尝试在文本字段中输入文本时出现以下错误:
'NSInvalidArgumentException',原因:'-[NSNull 长度]:无法识别的选择器发送到实例
当我尝试在文本字段中输入一些文本时会发生这种情况。我正在视图控制器内的一个空视图上对此进行测试。我为文本字段创建了 IBOutlet 并将其委托设置为我的控制器。不知道我错过了什么。
更新 所以当我通过添加一个新的视图控制器和一个文本字段在新的故事板上尝试这个时,它不会抛出这个异常。也许这个故事板有问题?
可能的解决方案:
我的问题是因为我无意中单击了属性检查器中的键盘命令控件。我没有创建任何命令,但是输入和空条目导致文本字段中的任何输入崩溃。该问题只会在设备上重现,而不会在模拟器中重现。
查看所有视图控制器的属性检查器:
[
并删除那个空的“在下面输入操作”条目。
希望这有帮助..
由于您没有发布代码,我只能告诉您错误消息在最常见情况下的含义。
看来您正在从集合中提取项目,因为这是最常用的地方NSNull
。您可能正在做其他NSNull
我们看不到的事情,当然没有代码可以参考。
您正在尝试获取可能打算成为的东西的长度,NSString
但在运行时它实际上是NSNull
,它没有length
定义方法。您将需要检查对象是否存在NSNull
并执行其他操作,因为 NSNull 将拒绝调用未定义的选择器。
if (text == [NSNull null]) {
// do something different
} else {
text.length; // call methods on NSString
}
如果您期望NSNull
表现得像nil
,它们都是非常不同的。Nil 不会在它无法识别的方法上抛出错误,它只会无操作,而 NSNull 对象(实际上是一个单例/轻量级)将崩溃。您将始终需要检查NSNull
是否在数组、字典等中使用它们。如果您NSNull
用于其他目的,请考虑使用 nil 代替。
您调用 Nil 对象的方法长度。确保您的 viewController 出口链接到您的 textField 和 @synthesize youTextField