结果类型 'Element' 与预期类型不匹配

Result type 'Element' does not match expected type

我正在使用 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

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

results An array containing the input from the user, or nil if the user canceled the operation. When an array is provided, the value in the array is usually an NSString object representing the text input. The array can also contain an emoji image, packaged as an NSData object. You can use the data object to create a corresponding UIImage object.

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

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

results[0] as? String 

确实没有意义。应该是

results.first as! String

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