2017-01-13 4 views
0

私は困惑しています。タイプ 'AnyDataSource <NSManagedObjectSubclass>'の値を 'AnyDataSource <NSManagedObject>'タイプの値に割り当てることはできません

この質問のタイトルはコンパイラエラーです。

私は基本的にNSFetchedResultsControllerとというデリゲートと結婚するオブジェクトを作成しています。 typeパラメータは、どのNSManagedObjectサブクラスがフェッチ要求で使用されるべきかを示すために使用されます。ここで

は、スウィフトはダイナミズムに欠けている例であり、我々はそう

(私は私がすることはできませんよ何を言われスウィフトと嫌いに新たなんだ、OR)、クレイジーコードのすべての種類を書いて終わります、UITableViewControllerサブクラスで、私はNSManagedObjectのサブクラスでこれらのいずれかを作成し、そのプロパティに割り当てしようとすると、プロパティ

var dataSource: AnyDataSource<NSManagedObject>? 

をしたいのですが、コンパイラは文句を言います。警告なしで成功することができることは何もないようです。

あなたはNSManagedObjectまたはそのサブクラスを使用できるはずだと思いますので少し混乱します。

アイデア?私はrealm.ioのように、インターネット上に見られる典型的な "タイプ消去"パターンを使用しています。

+0

しかし、 'AnyDataSource 'に 'T '型の入力を受け取るメソッドがあるとどうなりますか? 'AnyDataSource 'をAnyDataSource に渡すことができれば、 'NSManagedObjectSubclass'に' NSManagedObject'を渡すことができます。これは不正です。 – Hamish

+0

関連項目[クラスの値をSwiftの\ [String:Class \]のディクショナリに格納するにはどうすればよいですか?(http://stackoverflow.com/q/38590548/2976878) – Hamish

+0

T拘束される。ここで 'T:NSManagedObject'、' T:NSFetchRequestResult' – horseshoe7

答えて

0

最終的に私はこのアプローチが不可能であることを発見しました。つまり、完全なプロトコルベースのプログラミングでこれらを達成することです。

関連する型のないいくつかの基本プロトコルを定義し、そのプロトコルを実装する抽象基本クラスを実装し、関連付けられた型を持つさらなるプロトコルを実装する汎用型パラメータをサブクラスに導入しました。

完成したら、githubに私の一般化されたソリューションを投稿します。

関連する問題