Swift 2.0 所有新特性

作者: 南栀倾寒 | 来源:发表于2015-06-11 21:46 被阅读641次

    写在开头 iOS开发者 群532084214 给大家提供一个交流技术 也可以聊天打屁的平台

    最近Swift 2 出来了 国内开发者迅速上手 参看这个

    http://www.csdn.net/article/2015-06-09/2824909-xcode-7-beta-and-swift

    但是发现要不然写的不全 要不然写都不写 不知道毛线意思 索性自己写
    Repeat

           func doTest() {
        var x = 0
        //        为了增强语意do换成repeat
        repeat {
            print(x)
            x++
        }while(x<6)
        
    }
    

    Error Handling

    // ErrorType 可以throws 和catch  NSError 已经实现ErrorType
    enum MyError:ErrorType{
        case MissName
        case MissOther
    } //enum 适合自定义error
    
    
    
    
    //     no throw
    func  errorTest1() -> Bool {
        do {
            try NSURL(string: "fa")?.checkResourceIsReachable()
            return true
            //            指定错误
        }catch NSURLError.FileDoesNotExist {
            return false
        }catch {
            return false
        }
    }
    
    
    //     has throw
    //    guard 也可以配合throw
    func errorTest2() throws {
        defer { print("no meter how  这个一定会放在方法尾执行 类型于 java  finally  不过可以不配合try  catch ")}
    //             swift 1.X init?
        let index = Int("gs")
        print(index)//nil 这样真的好吗  如果真的出现错误怎么把Error 到处传递 ?
    
        // swift 2.0
        do {
            try NSURL(string: "fa")?.checkResourceIsReachable()
        }catch  {
            throw error
        }
    }
    
    
    
    //     I know never error
    func errorTest3 (){
        //        当然只是 demo  我瞎鸡巴写的 肯定有错的
        try!  NSURL(string: "http://www.baidu.com")?.checkResourceIsReachable()
        print("绝壁没有错误")
    }
    

    @avAiliable

    @available(iOS 8.0, OSX 10.10, *)
    func startUserActivity() -> NSUserActivity? {
        if #available(iOS 8.0, OSX 10.10, *) {
            // 当版本匹配时使用Handoff APIs.
            let activity = NSUserActivity(activityType:"com.example.ShoppingList.view")
            activity.becomeCurrent()
        } else {
            //当版本不匹配时返回.
            return nil
            
        }
        return nil
    }
    

    defer

    func deferTest() {
        let f = fopen("x.txt", "r")
        defer {
            fclose(f)
        }
        
    }
    

    guard

    func guardTest() -> String {
        let  name:NSString  = "fa"
        let  age  = 8.0
        guard  let realName = name   as? String ,            let realAge = age as? Double else {
            print("这个guard类似于if  只不过大部分时间用来坐模式匹配 ")
            
            return "'这里转换失败提前退出  其实就是  guard  ====== !if "
        }
        //        guard  let realName = name   as? String ,            let realAge = age as? Int else {
        //            print("这个guard类似于if  只不过大部分时间用来坐模式匹配 ")
        //
        //            return "'这里转换失败提前退出  其实就是  guard  ====== !if "
        //        }
        print("\(realName)\(realAge)   转换成功")
        return "转换成功"
        //        for in  where    /  switch case where  / if let where /while...where 也支持匹配
    }
    

    Protocol Extension has default implementation

    //MARK:- 可以给协议加扩展
      extension UITableViewDataSource {
    func myFun(){
        print("带有默认实习的扩展 可以用作设计模式中适配器模式")
       }
    }

    相关文章

      网友评论

      • 南栀倾寒:补充一下 guard 适用于 break return continue 中断语句
      • 南栀倾寒:补充一下 guard 适用于 break return continue 中断语句

      本文标题:Swift 2.0 所有新特性

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