zoukankan      html  css  js  c++  java
  • 《从零开始学Swift》学习笔记(Day 52)——Cocoa错误处理模式

    原创文章,欢迎转载。转载请注明:关东升的博客 

    Swift错误处理模式,在Swift 1.x和Swift 2.0是不同的两种模式。

    Swift 1.x代码错误处理模式采用Cocoa框架错误处理模式,到现在Objective-C还沿用这种处理模式,而Swift 2.0之后采用了do-try-catch错误处理模式。

    下面的示例代码是从文件中读取字符串到内存中,如果使用Swift 1.x错误处理模式代码如下:

    import Foundation 
    
    var err: NSError?        //定义可选的NSError?变量
    
     
    
    let contents = NSString(contentsOfFile: filePath,
    
                Ê encoding: NSUTF8StringEncoding, error: &err)
    
     
    
    if err != nil {      //判断err变量是否还是nil
    
        // 错误处理
    
    }

    NSError?一定是可选的变量,因为要给它初始化为nil。

    判断err变量是否还是nil,如果还是nil在代码

    let contents = NSString(contentsOfFile: filePath,
    
                        Ê encoding: NSUTF8StringEncoding, error: &err)

    方法调用过程中没有发生错误,否则说明有错误发生。

    上述代码的构造函数,它的Swift语法定义如下:

    init?(contentsOfURL url: NSURL,
    
             encoding enc: UInt,
    
                error error: NSErrorPointer)

    构造函数的最后一个参数是NSErrorPointer(即NSError指针),那么在实际调用时候我们需要传递err变量地址(即&err),&是取地址符。当方法调用完成后,如果有错误则err变量会被赋值。

    欢迎关注关东升新浪微博@tony_关东升。
    关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息
                              ​
    更多精品iOS、Cocos、移动设计课程请关注智捷课堂官方网站:http://www.zhijieketang.com
    智捷课堂论坛网站:http://51work6.com/forum.php

     

  • 相关阅读:
    Leetcode Spiral Matrix
    Leetcode Sqrt(x)
    Leetcode Pow(x,n)
    Leetcode Rotate Image
    Leetcode Multiply Strings
    Leetcode Length of Last Word
    Topcoder SRM 626 DIV2 SumOfPower
    Topcoder SRM 626 DIV2 FixedDiceGameDiv2
    Leetcode Largest Rectangle in Histogram
    Leetcode Set Matrix Zeroes
  • 原文地址:https://www.cnblogs.com/iOS-Blog/p/5075237.html
Copyright © 2011-2022 走看看