Swift: 在为 UITextField 对象设置委托时展开可选值时意外发现 nil

Swift: unexpectedly found nil while unwrapping an Optional value when setting delegate for UITextField object

更新:这个问题有 2 个反对票,我想让这个问题对其他人有点用处——因为我没有删除它的选择。我犯的错误是剪切和粘贴有接口插座的代码。由于当时我是新手,所以我假设我复制粘贴时,出口 link 也会被复制和粘贴。显然这样不行。

我正在编写一个单视图应用程序。它有一个 UITextField 和一个 MKMapView。我想在Return键被击中的时候做点什么,所以我基本跟着

How to hide keyboard in swift on pressing return key?

但它与我的其他代码不太吻合。知道为什么它不起作用以及如何解决它吗?

通过按住控制键从 StoryBoard 拖动到 searchText 变量,确保将 UITextField 从 StoryBoard 连接到 searchText IBOutlet。

您已将插座设置为隐式展开。这是正确的做法,但是当你的代码执行时,outlet 不能为 nil 否则你的代码会崩溃。

您的插座可能坏了 link。设置断点并检查插座。

您可以更改代码以使用“if let”表达式来防止崩溃。在 Swift 语言参考 IBook 中搜索“可选绑定”以了解它。

编辑:

代码可能如下所示:

if let requiredSerachText = searchtext
{
  requiredSearchText.delegate = self
}