Property Wrappers是Swift 5引入的新特性,并且在SwiftUI中有比较广泛的应用,比如@State、@Binding、@ObservedObject、 @Environment,该特性可以将声明的属性及对应的逻辑提取到一个单独的结构体中,从而可以大大的复用和简化我们的代码及逻辑。在日常开发中,我们也可以使用该特性来重构我们的代码。
扩展UserDefaults并结合枚举实现初版封装
如下代码所示,我们可以直接扩展UserDefaults来实现对内容的存取,这样我们在使用的时候就可以避免重复代码的粘贴复制,而且规避了直接使用字符串。
image虽然通过这种封装,我们在调用的时候非常的方便,但是随着需要存储的字段越来越多时,UserDefaults的这个扩展类就会变得越来越臃肿,因为每增加一个字段,都要编写对应的setter/getter。当出现这种重复的属性处理代码块的时候,我们就可以考虑使用PropertyWrappers来提取一下了。
使用Property Wrappers 提取属性逻辑代码
参照官方示例,我们创建一个UserDefault结构体,并使用关键字@propertyWrapper标注。
image因为在类扩展中无法声明存储属性,因此需要创建一个UserDefaultsConfig来使用刚创建的property wrapper。代码如下:
image【关注微信公众号 发现更多精彩】
网友评论