我正在使用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
答案 0 :(得分:2)
文档说明results
参数是什么:
结果包含用户输入的数组,如果用户取消操作,则为nil。提供数组时,数组中的值通常是表示文本输入的NSString对象。该数组还可以包含一个表情符号图像,打包为NSData对象。您可以使用数据对象创建相应的UIImage对象。
如果仔细查看方法定义,您会注意到它将results
定义为可选数组[AnyObject]?
。你似乎期待像[AnyObject?]
之类的东西,我认为这是不可能的。
数组本身是可选的,但数组元素当然可以不为nil
。因此你的演员
results[0] as? String
没有意义。它应该是
results.first as! String
如果您确定数组中没有表情符号数据。