ios swift4 新功能

  • 1.字符串String类型更加人性化,多行字符串文字,支持Range,也算集合类型
    1.字符串
        let name = "Hi,swift"
        print(name.count)
        print(name.isEmpty)
        print(name.dropFirst())//去掉第一个元素,生成一个新元素(i,swift)
        print(name.dropLast())//去掉最后一个元素生成一个新元素(Hi,swif)
        print(name.dropFirst(Int(name.count-3)))
        
        let time = "2017-12-26 16:40:45:33"
        print(time.dropLast(Int(time.count-10)))
 
        let mstr = String(name.reversed())//倒序元素
        print(mstr)
    
        //倒序reversed
        let arr = ["1","2","3","4"]
        for (_,item) in arr.enumerated().reversed() {
             print(item)
        }
        
         //多行文字,通过一对三个双引号直接来赋值----- """ 要输入的文字在这对三引号之间 """
        /// plist格式
        let plistInfo = """
        
        
        
           
              title
                  相机
              imageName
                  http://img.blog.csdn.net/20170217102843795
           
        
        
        """
        /// JSON格式
        let jsonInfo = """
        {
          "data": {
              "title": "apple"
              "phone": "10086"
              "creat_at": "2017-10-11"
          }
        }
        """
        //古诗词
        let poetry = """
                    《沁园春·雪》
                    北国风光,千里冰封,万里雪飘。
                    望长城内外,惟馀莽莽;大河上下,顿失滔滔。
                    山舞银蛇,原驰蜡象,欲与天公试比高。
                    须晴日,看红妆素裹,分外妖娆。

                    江山如此多娇,
                    引无数英雄竞折腰。
                    惜秦皇汉武,略输文采;唐宗宋祖,稍逊风骚。
                    一代天骄,成吉思汗,只识弯弓射大雕。
                    俱往矣,数风流人物,还看今朝。
                 """
        print(plistInfo)
        print(jsonInfo)
        print(poetry)
        
        
       
        
        //2便捷的Range
        var str = "Hello,swift!"
        var index = str.index(of: ",")

        let greeting = str.prefix(upTo: index!)
         print(greeting)//Hello
        
        index = str.index(index!, offsetBy: 2)
        let name1 = str.suffix(from: index!)
        print(name1)
        
        print(Array(str.enumerated()).count)

        for (_,item) in Array(str.enumerated()).enumerated() {

            print(item)
        }
        //zip函数可以更改数字下标从1开始计数
        print(Array(zip(1..., str)))//zip

        //集合用法
        // 字符串可以像集合那样进行遍历,直接通过.count知道字符串个数
        var str1 = "Hello, swift!"
        print(str1.characters.count) // Swift3.0 写法
        print(str1.count)            // Swift4.0 写法
        /// 遍历
        str1.forEach { (item) in
            print(item)
        }
        str1.forEach {
            print($0)
        }
  • 2.改进的private的访问权限,私有访问修饰符
    Swift 3的一个元素,一些不太喜欢的是添加fileprivate 。 从理论上讲,这是非常好的,但实际上它的使用往往会令人困惑。 目标是在成员本身中使用private的,并且在您想要在同一文件中的成员共享访问的情况下很少使用fileprivate。 问题是Swift鼓励使用扩展将代码分解成逻辑组。 扩展被认为在原始成员声明范围之外,这导致对fileprivate的广泛需求。
 struct SpaceCraft {
            private let warpCode : String
            fileprivate var name : String = "swift"
            
            init(warpCode: String) {
                self.warpCode = warpCode
            }
        }
let enterprise = SpaceCraft(warpCode: "It's swift")

你可能感兴趣的:(ios swift4 新功能)