Swift (map,reduce,sorted)

2016-11-17  本文已影响36人  拥抱月亮的大星星

1.转化

str = "num:18,state:0|num:17,state:1"
转化成stateModel

map :把里面的每个元素按照你的条件进行转化

reduce:把所有的元素---》合并成result,比如我这里

objArray:["num:18","state:0"]
使用reduce把所有的obj-》model的属性,最终转化成stateModel

sort:这个感觉用法和oc差不多,闭包使用便捷
示例(排序):

 let array = U.sorted(by: { $0.num < $1.num})

2.代码示例

class stateModel:NSObject{
 
    var num = ""
    var state = ""

}

let str =  "num:18,state:0|num:17,state:1"

let array = str.components(separatedBy: "|")

let U = array.map { (obj) -> stateModel in
    
    let objArray:Array<String> = obj.components(separatedBy: ",")
    
    let model = stateModel()
    
    print(objArray)
    
    objArray.reduce(model, { (model, obj) -> stateModel in
        
        if obj.contains("num:"){
            model.num = obj.replacingOccurrences(of: "num:", with: "")
        }
        
        print("_____________")
        
        if obj.contains("state:"){
            model.state = obj.replacingOccurrences(of: "state:", with: "")
        }
        
        return model
        
    })
   
    return model
    
}

print("*******")
print(U.first!.num)

print(U.first!.state)

print("*******")
print(U.last!.num)

print(U.last!.state)

输出:
["num:18", "state:0"]
_____________
_____________
["num:17", "state:1"]
_____________
_____________


18
0


17
1

上一篇 下一篇

猜你喜欢

热点阅读