美文网首页
swift 2.0中写optional String 的 Ext

swift 2.0中写optional String 的 Ext

作者: 有点精分 | 来源:发表于2016-03-09 10:30 被阅读282次

    在swift中,字符串拼接很简单

    var a: String? = "aaa"
    var b: String? = "bbb"
    let newStr = a! + b!
    

    因为使用 ! 来获取一个不存在的可选值会导致直接崩溃,使用!来强制解析值之前,一定要确定可选包含一个非nil的值。
    但是在有些时候可选变量不是一定存在的,因此可以写一个 Extension 来判断 optional String 是否为空.

    protocol OptionalString {}
    extension String: OptionalString {}
    
    extension Optional where Wrapped: OptionalString {
        var isNilOrEmpty: Bool {
            return ((self as? String) ?? "").isEmpty
        }
        /**如果字符串存在,返回自己,如果不存在,返回参数*/
        func existOrReplaced(replace: String) -> String {
            return ((self as? String) ?? replace)
        }
    }
    

    这样就可以使用自己写的Extension来判断optional String是否存在

    var a: String? = "aaa"
    var b: String?
    print(b.isNilOrEmpty)
    let newStr = a.existOrReplaced("a变量") + b.existOrReplaced("b变量")
    

    ----------------2016年04月27日分割线-------------
    感觉自己太蠢了,swift有自带的方式,也记录下来吧

    var b: String?
    let newStr = (b ?? "b变量不存在") + (b ?? "b变量不存在")
    

    来源StackOverFlow:
    http://stackoverflow.com/questions/29381994/swift-check-string-for-nil-empty/33007282#33007282

    相关文章

      网友评论

          本文标题:swift 2.0中写optional String 的 Ext

          本文链接:https://www.haomeiwen.com/subject/uowzkttx.html