How to add an optional string extension?

后端 未结 9 601
佛祖请我去吃肉
佛祖请我去吃肉 2020-12-13 23:44

You can create a String extension like so:

extension String {
   func someFunc -> Bool { ... }
}

but what if you want it to apply to opt

9条回答
  •  醉话见心
    2020-12-14 00:08

    found some trick swift 3

    class A{
        var name:String!;
        init(_ name:String?){
            self.name = name;
        }
    }
    
    extension Optional where Wrapped == String {
        func compareText(_ other:String?)->Bool{
            switch (self,other){
            case let(a?,b?):
                return a < b;
            case (nil,_):
                return true;
            default:
                return false;
            }
        }
    }
    
    let words:[A] = [A("a"),A(nil),A("b"),A("c"),A(nil)];
    
    // let sorted = words.sorted{ 0.name.compareText($1.name) }
    // trick
    let sorted = words.sorted{ ($0.name as String?).compareText($1.name) }
    
    print(sorted.map{$0.name});
    

提交回复
热议问题