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

时间:2015-08-02 04:30:00

标签: swift watchkit textinput

我正在使用WatchKit。我一直试图整理一个基本的Grocery List应用程序。这是我坚持使用的代码块。

@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

1 个答案:

答案 0 :(得分:2)

文档说明results参数是什么:

  

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

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

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

results[0] as? String 

没有意义。它应该是

results.first as! String

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