“条件绑定的初始化程序必须具有可选类型,而不是'字符串'”,但在那种情况下还有其他什么?
问题描述:
“初始值设定条件结合必须有可选的类型,而不是字符串‘’。 我试图sender.stringValue
和sender.stringValue?
但Xcode的东西它的滑稽一次。(属性上面的错误消息)“条件绑定的初始化程序必须具有可选类型,而不是'字符串'”,但在那种情况下还有其他什么?
extension MapViewController: NSSearchFieldDelegate {
override func searchFieldAction(sender: NSSearchField) {
// Note: use defer to dismiss the search controller even if the guard returns
defer {
}
guard let text = sender.stringValue.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
where !text.isEmpty else { return }
let request = MKLocalSearchRequest()
request.naturalLanguageQuery = text
request.region = mapView.region
let search = MKLocalSearch(request: request)
search.startWithCompletionHandler { (response, error) in
guard let item = response?.mapItems.first else { return }
let annotation = item.placemark
self.mapView.addAnnotation(annotation)
self.mapView.showAnnotations([annotation], animated: true)
self.mapView.selectAnnotation(annotation, animated: true)
}
}
答
你只是想
let text = sender.stringValue.stringByTrimmingCharactersInSet(.whitespaceAndNewlineCharacterSet())
guard !text.isEmpty else { return }
如果这不是可选的,解决方法就是不解开它,不要使用'guard let'。 – Moritz