iOS中创建Model的最佳实践记录

2020-01-21 07:23:18于丽

前言

作为一个优秀的程序员,或者想成为优秀的程序员,最基本的你得有MVC编程思想,那么你就要对JSON获取的数据建Model,将service和controller层都分离,从而做到低耦合。现在有很多利用runtime能快速的将json数据转为一个Model。但是我在做项目的时候,发现创建Model(特别是属性特多的)写属性代码很浪费时间,降低了编程效率。后来我自己就写了个好玩的能省去时间创建Model的一个方法,下面话不多说了,来一起看看详细的介绍吧

Immutable Model

我们以UserModle为例,我们可以像这样创建:


public class UserModel: NSObject {
 
 public var userId: NSNumber
 public var name: String?
 public var email: String?
 public var age: Int?
 public var address: String?
 
 init(userId: NSNumber) {
  
  self.userId = userId
  
  super.init()
 }
}

用的时候可以像这样:


let userModel = UserModel(userId: 1)
user.email = "335050309@qq.com"
user.name = "roy"
user.age = 27
user.address = "上海市杨浦区"

这样创建一个User对象好处是弹性很大,我可以随意选择设定某个property的值,但是背后同样带有很大的缺点,就是这个Model变得异常开放,不安分,这种Model我们一般叫Mutable Model。有的时候我们需要Mutable Model,但大部分的时候出于数据安全和解耦考虑我们不希望创建的property在外部可以随意改变,在初始化后不可变的Model叫做Immutable Model,在开发中我的建议尽量使用Immutable Model。我们通过把property设置成readonly,在Swift可以用let或者private(set)。也就是这样:


public class UserModel: NSObject {
 
 public let userId: NSNumber
 public private(set) var name: String?
 public private(set) var email: String?
 public private(set) var age: Int?
 public private(set) var address: String?
 
}

那么怎么写初始化方法呢?