这是一种特殊的废话,让我很好奇。我认为截图是最简单的方式来展示发生了什么。
这个错误似乎完全是胡说八道。我看到了区别"返回表达"和"返回类型"在错误中,但我不知道开发人员是否选择了有意义或者错误的语言。
谁能告诉我这里发生了什么?
修改
根据要求,我在隔离的Swift文件中创建了一个小测试用例:
func TestFunc(item: AnyObject) -> Bool {
if !(item[1] as! Bool){
return (item[2] as! Array).count > 0
}
return false
}
出了同样的错误。按照ColGraff的建议,为数组提供类型,我将代码更改为:
func TestFunc(item: AnyObject) -> Bool {
if !(item[1] as! Bool){
return (item[2] as! Array<AnyObject>).count > 0
}
return false
}
确实删除了错误消息,但到目前为止,没有一个回复回答了原始问题,以及错误消息实际意味着什么。
答案 0 :(得分:1)
您的问题源于代码
item[2] as! Array
您需要指定数组中元素的类型。我假设它是AnyObject
所以你应该这样做:
return (item[2] as! Array<AnyObject>).count > 0
但是,此代码中存在许多错误以及许多反模式。一个主要问题是您正在使用强制解包运算符!
。如果可以的话,尽量避免使用它。您应该测试每个Optional
并处理它是否已设置或未设置。
guard let item2 = item[2] as? [AnyObject] else { return false }
return !item2.isEmpty
这个问题比应该更难回答,因为你没有以Minimal, Complete, and Verifiable的方式发布代码。屏幕截图不是很有用,因为应答者必须重新输入您的代码,占用时间并可能引入错误。更不用说在发生任何调试之前,必须重现围绕错误的大部分代码。如果您让人们更容易回答您的问题,您将从本网站获得更多有用的信息。