想随时随地轻松变更数据格式教你5个Swi

全文共字,预计学习时长11分钟图源:unsplash想随时随地轻松变更数据格式?本文将教你5种解法!我将在XcodePlayground中创建示例函数,运行它们并观察结果。1.map.map操作符允许我们转换闭包中来自发布者的所有元素。varsubscriptions=SetAnyCancellable()funcmapExample(){letsubject=PassthroughSubjectInt,Never()subject.map{(integer)inreturnString(integer)}.sink(receiveValue:{print(Value:\($0),Type:\(type(of:$0)))}).store(in:subscriptions)subject.send(12)subject.send(31)subject.send(55)subject.send(4)subject.send(18)}下面是这段代码的作用:·创建一个接受Int值的PassthroughSubject。·使用.map操作符将每个接收到的Int值转换为String。·然后,订阅发布者并打印转换后的元素的值和类型。·向受试者发送随机数以观察以下结果:还有一种巧妙的方法来使用对象的键路径获取对象的属性:funcmapKeyPathExample(){structCarBrand{lettitle:Stringletcountry:String}letcarBrandsSubject=PassthroughSubjectCarBrand,Never()carBrandsSubject.map(\.country).sink(receiveValue:{countryinprint(Country:\(country))}).store(in:subscriptions)carBrandsSubject.send(CarBrand(title:MercedesBenz,country:Germany))carBrandsSubject.send(CarBrand(title:Ford,country:USA))carBrandsSubject.send(CarBrand(title:Honda,country:Japan))}使用.map(\.country),可以访问CarBrand的国家属性。然后只需打印每个国家:2.replaceNil顾名思义,.replaceNil操作符将每个接收到的nil元素转换为指定的元素:funcreplaceNilExample(){letvalues:[Int?]=[,nil,nil,12,10]letvaluesPublisher=values.publishervaluesPublisher.replaceNil(with:0).map{$0!}.collect().sink(receiveValue:{print($0)}).store(in:subscriptions)}请注意,还可以将多个操作符组合在一起以达到必要的结果。首先将每个nil值替换为0,然后强制解开值,最后将所有值收集在一个数组中:需要注意的是在.map操作符中使用强制展开的方法。如果你不喜欢强行解包该怎么办?我们还有一个.map协变量:.


转载请注明:http://www.aierlanlan.com/rzdk/8236.html

  • 上一篇文章:
  •   
  • 下一篇文章: