结果类型"元素"与预期类型不匹配



我使用WatchKit。我一直在尝试把一个基本的购物清单应用程序放在一起。这是我卡住的代码块。

@IBAction func getItemNameAndAtToTable() {
    presentTextInputControllerWithSuggestions(suggestions,
        allowedInputMode: WKTextInputMode.Plain,
        completion: { (results) -> Void in
            print(results)
            if results != nil && results!.count > 0 {
                if let result = results[0] as? String {
                    self.groceries.append(result)
                    self.reloadTable()
                }
            }
        })
}

if let result = results[0] as? String {是我得到Result type 'Element' does not match expected type的地方。我看了教程和Swift文档,我只是没有看到这里的错误。有人知道或知道为什么会这样吗?

编辑:另外,我正在使用Xcode 7.0 beta 4和Watch Simulator 2.0

文档说明了results参数是什么:

results包含用户输入的数组,如果用户取消了操作,则为nil。当提供一个数组时,数组中的值通常是一个表示文本输入的NSString对象。该数组还可以包含一个表情符号图像,打包为NSData对象。你可以使用数据对象来创建一个相应的UIImage对象。

如果您仔细查看方法定义,您会注意到它将results定义为可选数组[AnyObject]?。你似乎在期待像[AnyObject?]这样的东西,我认为这是不可能的。

数组本身是可选的,但是数组元素当然可以不是nil。因此你的cast

results[0] as? String 

没有真正的意义。应该是

results.first as! String

如果你确定数组中没有表情符号数据。

相关内容

  • 没有找到相关文章

最新更新