理解iOS中的MVVM体系结构
为了理解ios的MVVM体系结构,我有几个问题,如下所示-理解iOS中的MVVM体系结构,ios,iphone,design-patterns,mvvm,architecture,Ios,Iphone,Design Patterns,Mvvm,Architecture,为了理解ios的MVVM体系结构,我有几个问题,如下所示- 模型与视图模型有何不同?模型也有数据,为什么我们需要在视图模型中编写和更新相同的属性(重复代码) 在视图和视图模型之间创建双向数据绑定可以很好地进行表单验证。除了它还有其他的应用吗 我们应该使用KVO在视图和视图模型之间创建2个绑定吗?到目前为止有人经历过什么不利因素吗 我们应该将网络(API数据获取)代码放在视图模型中吗 视图模型准备并调整模型中的数据以用于特定位置的视图 有人这样做,但您可能不应该将您的网络放在视图模型中。特别是因为
我假设twitter是一个使能工具,尽我所知回答您的问题,希望它能有所帮助 1) 是的,ViewModel和Model是不同的
Model - Represents the Domain Objects (Eg: “User” object which may contain id : Int, name : String, avartarURL : String, company : String, location : String, followers : [User], following: [User], etc… )
ViewModel - only represents objects that are represented in view (Eg: nameLabelText : String, profileImageURL : String ) assuming that UserDetailView only shows User name and avatar image.
2) 在所有情况下,当您希望在UI中显示快速流时,
例如:如果您试图跟踪或取消跟踪一个用户,如果您在UI中查看,当您按下“跟踪”或“取消跟踪”按钮时,该按钮会快速变为相反的状态(跟踪->取消跟踪或取消跟踪->跟踪),即使API请求尚未完成。因为这是为了更好的用户体验,而且这些API不太可能失败
View -> ViewModel -> API service
如果200行
Model Gets Updated
ViewModel -> Model
如果Api失败
ViewModel gets updated and Error message is triggered
ViewModel -> View
3) 从未使用过KVO,但强烈建议您研究/考虑RXCocoa和RXSwift。如果你还没有
4) 如果应用程序很小并且没有很多域逻辑,那么在Viewmodel中处理API并不是一个坏主意。但如果该领域的逻辑是很多,并有机会增长。我想说的是,包括一个业务逻辑层和一个API服务,这样你就不会在ViewModel中出现方法爆炸,层将是分开的我假设twitter是一个使能工具,尽我所知回答你的问题,希望它能有所帮助 1) 是的,ViewModel和Model是不同的
Model - Represents the Domain Objects (Eg: “User” object which may contain id : Int, name : String, avartarURL : String, company : String, location : String, followers : [User], following: [User], etc… )
ViewModel - only represents objects that are represented in view (Eg: nameLabelText : String, profileImageURL : String ) assuming that UserDetailView only shows User name and avatar image.
2) 在所有情况下,当您希望在UI中显示快速流时,
例如:如果您试图跟踪或取消跟踪一个用户,如果您在UI中查看,当您按下“跟踪”或“取消跟踪”按钮时,该按钮会快速变为相反的状态(跟踪->取消跟踪或取消跟踪->跟踪),即使API请求尚未完成。因为这是为了更好的用户体验,而且这些API不太可能失败
View -> ViewModel -> API service
如果200行
Model Gets Updated
ViewModel -> Model
如果Api失败
ViewModel gets updated and Error message is triggered
ViewModel -> View
3) 从未使用过KVO,但强烈建议您研究/考虑RXCocoa和RXSwift。如果你还没有
4) 如果应用程序很小并且没有很多域逻辑,那么在Viewmodel中处理API并不是一个坏主意。但如果该领域的逻辑是很多,并有机会增长。我想说的是,包括一个业务逻辑层和一个API服务,这样您就不会在ViewModel中出现方法爆炸,层将是分开的我的两分钱
如果您有一本书的出版日期,您的模型上可能有一个时间戳,而在视图模型中,您可以应用日期格式(用户首选样式、UTC、DST等)谢谢您的回复。事实上,我被迫不使用第三方库,这就是为什么我不能在我的项目中使用RXCocoa和RXSwift的原因。谢谢你的回复。实际上,我被迫不使用第三方库,这就是为什么我不能在我的项目中使用RxCoCoCoA和RXSwift。