Swift OC 混编 Model类的设置

在OC中model类的属性大多如下设置(记得要根据需求换关键字,不是本篇重点)

@property (nonatomic, strong) NSString *name;

因为OC中属性为nil时并不会引发crash,当从服务器接收数据将字典转化为模型时,如果某些字段为空,在oc中直接[entity.name doSometing];也大多不会崩溃(有例外)
但是这条属性到了swift中就变成了这样


如果name为空时就会引发crash

这样的话,如果服务器接收的字段为NULL,赋值之后,在swift中只要调用entity.name!就回引发crash,因为不能给一个nil值强制解包.如果不修改model类的话,每次使用这个属性都需要

if let name = entity.name {
//执行赋值语句
} 
//或者
guard let name = entity.name else {
      return
}
//执行赋值语句

这样很啰嗦,因此我们需要在Objective-C中,将属性标上 nullable ,这样Swift中该属性变成了optional然后采用 if let 或者 guard let 来安全地拆包,某些属性也可以直接使用 entity.name? 也可以,解包时为nil也没关系,

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容