2016-08-01 3 views
1

実行時にのみ決定されるクラスにオブジェクトをキャストする方法を知りたい。実行時に決定されるクラスへのキャスト

のは、例を使ってみましょう:

let xClasses = [ClassA.self, ClassB.self] 
let xClass = xClasses[indexPath.row] 
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! xClass 

だから基本的に、私はクラスの配列を持っていると(のUITableViewCellのこの例では、オブジェクト)を鋳造するために、実行時にそれらのいずれかから選択したいと思います。

(上記のコードは機能しません) どうすればよいですか?

注:このコードを例として使用しましたが、私の質問は約UITableViewCellだけではありません。おかげさまで

+0

何が問題なのですか? –

+0

@ÖzgürErsil私は言った:どのように実行時に決定されるクラスにキャストすることができます。 (上記のコードのような) – Erfan

答えて

1

私のプロジェクトにはこういうものがあります。私はそれを処理するためにスイッチケースを使用します。このようなもの:

おそらくdefault:が必要です。

実行時に決定されるタイプの情報は、実際にはExistentialsと呼ばれます。このブログで詳細情報を読むことができますpost。 swift2では、スイッチのケースが必要ない場合は、プロトコルを使用する必要があります。

+0

ありがとう。記事を飛ばしました。 (後で詳しく説明します) – Erfan

+0

上記のような状況でキャストにプロトコルを使用する方法を教えてください。 (私は回避策としてもスイッチを使用していますが、実際にはスイッチが4〜5個あるので気に入らない) – Erfan

関連する問題