0

私のリストビューコントローラーのいくつかは同じように動作することに気づきました。次に、それらをListVCと呼ばれる一般的なコントローラーに抽象化したいと思います。計画では、必要に応じてListVCのインスタンスを作成し、そのインスタンスに必要なすべての特定のものをそのインスタンスに渡します。

たとえば、顧客のリストが必要な場合は、次のようにします。

ListVC *customersVC = [[ListVC alloc] init];
customersVC.tableArray = self.customersList

ListVCでは、特定のオブジェクトのクラスタイプを知る必要がある場合があります。私の例では、配列内のオブジェクトself.customersListはクラスからのものCustomerClassです。文字列をクラス名に変換できることは知っていますが、オブジェクトの型を返す必要があるListVC内のメソッドがある場合は役に立ちません。たとえば、ListVCでは、この古い非抽象化メソッドは次のとおりです。

- (CustomerClass *)customerAfterFilter

次のようになります。

- (self.objectClass *)objectAfterFilter

そして、そのようにインスタンス化された後、objectClassを設定しました。

ListVC *customersVC = [[ListVC alloc] init];
customersVC.tableArray = self.customersList    
customersVC.objectClass = [CustomerClass class];

どうすればこのようなことができますか?または、私のアプローチが間違っている場合は、正しいアプローチを提案してください。私はプログラミングの初心者です。

4

1 に答える 1

2

そのように返品タイプを変更することはできません。できることはid、任意のクラスのオブジェクトへのポインタであるを返すことです。

- (id)objectAfterFilter

編集:

Customer *c = [customersVC objectsAfterFilter];
[c duCustomerStuff];

または:

[((Customer *)[customersVC objectsAfterFilter]) doCustomerStuff];
于 2013-03-26T20:22:36.870 に答える