除了函数之外,swift中的每个类型都符合Any
吗?我了解AnyObject
表示所有类类型,Any
处于比此更高的级别,代表所有其他类型。但是我最近遇到了一种情况,我的功能看起来像是:
func myFunFunction(someArgument: Any) {
...
}
使用String
参数调用时:myFunFunction("This is a string")
我收到错误消息,指出类型String
无法转换为Any
类型。
编辑:
上面的例子只是一个例子。我想简化代码只是为了得到答案,但这是我的实际代码:
我有一个班级final class CollectionViewBinder: NSObject, UICollectionViewDataSource, UICollectionViewDelegate { }
它充当ReactiveCocoa的集合视图绑定助手。
init方法:
init(collectionView: UICollectionView, dataSignal: SignalProducer<[[Any]], NoError>, supplementarySignal: SignalProducer<[[Any]], NoError>?) { ... }
如果dataSignal
的类型为SignalProducer<[[String]], NoError>
,那么当我收到错误提示类型SignalProducer<[[String]], NoError>
无法转换为SignalProducer<[[Any]], NoError>
类型时这会让我觉得我的错误可能与ReactiveCocoa有关吗?
答案 0 :(得分:2)
你对Any
是正确的,苹果文档说:
任何可以表示任何类型的实例,包括函数类型。
你给我的例子没有任何问题。通常在这种情况下,错误发生在其他地方,但编译器会给出误导性消息。
答案 1 :(得分:1)
您期望被称为&#34;通用协方差&#34;目前Swift不支持。