@propertyWrapper的一种用处
在实际开发中,有时候如果我们遇到后台返回的一个URL字符串中带有中文,会导致我们在代码中初始化URL失败。而这在swift里有了巧妙的解决方案——
@propertyWrapper
@propertyWrapper
@propertyWrapper
是swift中的一大特性,即属性包装
。可以使用@propertyWrapper
进行属性的统一限定或封装,减少重复的代码。更多具体的介绍这篇文章里不细讲。
使用@propertyWrapper
避免URL初始化失败
- 先放代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16@propertyWrapper
struct Trimmed {
private var value = String()
var wrappedValue : String{
get { value }
set {
//可以用于字符串去中文
value = newValue.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!
}
}
init(wrappedValue : String){
self.wrappedValue = wrappedValue
}
} - 以上就是
Trimmed
这个属性包装器的具体实现,使用时只需要在属性前加上@Trimmed
即可
效果
1 | struct Test { |
TINO WU