Ios UITableView:同一单元格,多个模型对象(MVC)

Ios UITableView:同一单元格,多个模型对象(MVC),ios,uitableview,design-patterns,model-view-controller,uicollectionview,Ios,Uitableview,Design Patterns,Model View Controller,Uicollectionview,在使用UITableView和UICollectionView时,我正在研究编写模块化的干净代码,我发现了一个关于编写lighter ViewController的不错的博客。在遵循作者给出的实践的同时,我提出了一段关于同一单元格类型和多个模型对象的描述,不详细,只是描述性的。 我只是想问,有没有人建议我们如何以更好、更模块化的方式实现这一点? 这段话是这样说的 如果我们有多个模型对象可以使用相同的单元类型来表示,我们甚至可以进一步获得单元的可重用性。首先,我们在单元格上定义一个协议,对象必须符

在使用
UITableView
UICollectionView
时,我正在研究编写模块化的干净代码,我发现了一个关于编写lighter ViewController的不错的博客。在遵循作者给出的实践的同时,我提出了一段关于同一单元格类型和多个模型对象的描述,不详细,只是描述性的。 我只是想问,有没有人建议我们如何以更好、更模块化的方式实现这一点? 这段话是这样说的

如果我们有多个模型对象可以使用相同的单元类型来表示,我们甚至可以进一步获得单元的可重用性。首先,我们在单元格上定义一个协议,对象必须符合该协议才能按此单元格类型显示。然后,我们只需更改cell类别中的configure方法,即可接受符合此协议的任何对象。这些简单的步骤将单元格与任何特定的模型对象分离,并使其适用于不同的数据类型。

有人能解释一下这是什么意思吗?
我知道这是离题的,但它可能有助于编写更好的代码。

这类似于引入ViewModel或ViewAdapter。一个简单的例子是单元格显示任何项目的描述。假设您为该单元格指定了一个用户,它将显示该用户的全名。如果您发送邮件,它会显示主题。关键是,该单元并不关心到底给了它什么(用户或邮件)。它只需要每个项目的描述,所以它需要一些东西来帮助它从不同类型的每个模型中提取描述字符串。这就是ViewModel

然后替换为:Cell=>User或Cell=>News。使用:Cell=>ViewModel=>User或Cell=>ViewModel=>News。代码示例:

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 "";
    }
}

这类似于引入ViewModel或ViewAdapter。一个简单的例子是单元格显示任何项目的描述。假设您为该单元格指定了一个用户,它将显示该用户的全名。如果您发送邮件,它会显示主题。关键是,该单元并不关心到底给了它什么(用户或邮件)。它只需要每个项目的描述,所以它需要一些东西来帮助它从不同类型的每个模型中提取描述字符串。这就是ViewModel

然后替换为:Cell=>User或Cell=>News。使用:Cell=>ViewModel=>User或Cell=>ViewModel=>News。代码示例:

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 "";
    }
}

这里并不是说根据模型的类型编写条件代码。这里它要求声明一些接口(用java术语)或协议(用ObjC术语)。相同的概念,不同的实现方式。上面的代码段是使用适配器最简单的方法之一。我以为您只是想了解这个想法……这里并没有告诉您根据模型类型编写条件代码。这里它要求声明一些接口(用java术语)或协议(用ObjC术语)。相同的概念,不同的实现方式。上面的代码段是使用适配器最简单的方法之一。我以为你只是想知道。。。