1

UITableView & UICollectionViewで作業中にモジュラークリーンコードを書く研究を行っていましたが、軽いViewControllerを書いていいブログが見つかりましたObjc.io。私が筆者によって与えられたプラクティスに従う間、私は約Same Cell type and Multiple Model Objectと書いてあるパラグラフを思い描いた。 誰かが私たちがよりモジュラー的な方法でこれを達成する方法を提案しているか質問したがっていますか? 段落は、このような何か、UITableView:同じセル、複数のモデルオブジェクト(MVC)

In cases where we have multiple model objects that can be presented using the same cell type, we can even go one step further to gain reusability of the cell. First, we define a protocol on the cell to which an object must conform in order to be displayed by this cell type. Then we simply change the configure method in the cell category to accept any object conforming to this protocol. These simple steps decouple the cell from any specific model object and make it applicable to different data types.

、誰もがそれが何を意味するのか説明できますが言いましたか? 私はそれがトピックではないことを知っていますが、誰かがより良いコードを書くのを助けるかもしれません。

答えて

0

これは、ViewModelまたはViewAdapterの導入に似ています。これの簡単な例は、セルが項目の説明を表示することです。セルにユーザーを付けると、そのユーザーのフルネームが表示されます。メールを送信すると、件名が表示されます。要点は、セルがそれに正確に与えられたもの(ユーザまたはメール)を気にしないということです。それはすべての項目の説明が必要なのでのすべての単一モデルから説明文字列を抽出するのに役立つ何かが必要です。これがViewModelです。

代わりに、Cell => UserまたはCell => Newsの代わりに。使用:セル=> ViewModel =>ユーザーまたはセル=> ViewModel =>ニュース。コードサンプル:

class ViewModel { 

    private Object _item; 

    public ViewModel(Object item) { 
     _item = item; 
    } 

    public String getDescription() { 
     if (_item instanceof User) { 
      return ((User)_item).getFullName(); 
     } else if (_item instanceof Mail) { 
      return ((Mail)_item).getSubject(); 
     } 
     return ""; 
    } 
} 
+0

ここでは、モデルの種類によって条件コードを書いているわけではありません。 ここでは、いくつかのインターフェース(Javaの場合)またはプロトコル(ObjCの場合)を宣言するよう求めています。 –

+0

同じ概念、異なる実装方法。上記のスニペットは、アダプタを使用する最も簡単な方法の1つです。私はあなたがちょうどアイデアを得たかったと思った... – Robo

関連する問題