2016-04-30 8 views
-1

ファンクションを除き、すべてのタイプはAnyに準拠していますか? AnyObjectはすべてのクラスタイプを表し、Anyは他のすべてのタイプを表す上位レベルにあることを理解します。スウィフトタイプに準拠する

func myFunFunction(someArgument: Any) { 
    ... 
} 

そしてString引数でそれを呼び出すとき::私はのように見えた機能を持っていたところが、私は最近の状況に出くわしたmyFunFunction("This is a string")私はそのタイプStringAny型に変換することができないというエラーを取得します。

編集:

上記の例は単なる例です。答えを得るためにコードを単純化したいのですが、実際のコードは次のとおりです。

私はReactiveCocoaのコレクションビューバインディングヘルパーとして機能するクラスfinal class CollectionViewBinder: NSObject, UICollectionViewDataSource, UICollectionViewDelegate { } を持っています。

initメソッド:

init(collectionView: UICollectionView, dataSignal: SignalProducer<[[Any]], NoError>, supplementarySignal: SignalProducer<[[Any]], NoError>?) { ... } 

dataSignalの種類がSignalProducer<[[String]], NoError>であれば、私はタイプSignalProducer<[[String]], NoError>は私のエラーが何かだと思うように私につながるSignalProducer<[[Any]], NoError>型に変換することができないというエラーを取得するときですおそらくReactiveCocoaと関係がありますか?

+0

がスイフトのNo.あらゆるタイプ「機能とは別に、迅速にすべてのタイプでなく、任意に準拠」、_including_機能は、任意に準拠します。 – matt

+0

プレイグラウンドでは、エラーなしで 'myFunFunction("文字列 ")を呼び出すことができます。実際のコードを表示すると役に立ちます。迅速なエラーメッセージは誤解を招く可能性があり、実際のエラーはしばしば別の行にあるか、別の理由で発生します。 –

+0

私はより多くのコードで更新しました。 – barndog

答えて

2

あなたは右の程度Anyあり、リンゴのドキュメントは言う:

どれ

は、関数型を含め、すべてで任意の型のインスタンスを表すことができます。

私があなたに与えた例は問題なく動作します。通常この種の状況では、エラーは別の場所にありますが、コンパイラは誤解を招くメッセージを表示します。