Swift—Cocoa错误处理模式-备

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

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

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

 

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

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

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

 

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

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

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

 

  1. init?(contentsOfURL url: NSURL,
  2. encoding enc: UInt,
  3. error error: NSErrorPointer)

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

时间: 2024-11-05 12:15:50

Swift—Cocoa错误处理模式-备的相关文章

Swift—do-try-catch错误处理模式-备

Swift 1.x的错误处理模式存在很多弊端,例如:为了在编程时候省事,给error参数传递一个nil,或者方法调用完成后不去判断error是否为nil,不进行错误处理.   let contents = NSString(contentsOfFile: filePath, Êencoding: NSUTF8StringEncoding, error: nil)//error参数传递一个nil 或者   var err: NSError? let contents = NSString(cont

《从零開始学Swift》学习笔记(Day 52)——Cocoa错误处理模式

原创文章,欢迎转载. 转载请注明:关东升的博客 Swift错误处理模式,在Swift1.x和Swift 2.0是不同的两种模式. Swift 1.x代码错误处理模式採用Cocoa框架错误处理模式,到如今Objective-C还沿用这样的处理模式,而Swift2.0之后採用了do-try-catch错误处理模式. 以下的演示样例代码是从文件里读取字符串到内存中,假设使用Swift 1.x错误处理模式代码例如以下: import Foundation var err: NSError? //定义可选

《从零开始学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? //定义可选的NSE

《从零开始学Swift》学习笔记(Day 53)——do-try-catch错误处理模式

原创文章,欢迎转载.转载请注明:关东升的博客 Swift 1.x的错误处理模式存在很多弊端,例如:为了在编程时候省事,给error参数传递一个nil,或者方法调用完成后不去判断error是否为nil,不进行错误处理. let contents = NSString(contentsOfFile: filePath, Êencoding: NSUTF8StringEncoding, error: nil)//error参数传递一个nil 或者 var err: NSError? let conte

Swift学习:错误处理

错误处理(Error handling)是响应错误以及从错误中恢复的过程.Swift 提供了在运行时对可恢复错误的抛出.捕获.传递和操作的一等公民支持. 某些操作无法保证总是执行完所有代码或总是生成有用的结果.可选类型可用来表示值缺失吗,但是当某个操作失败时,最好能得知失败的原因,从而可以作出相应的应对. 举个例子,假如有个从磁盘上的某个文件读取数据并进行处理的任务,该任务会有多种可能失败的情况,包括指定路径下文件并不存在,文件不具有可读权限,或者文件编码格式不兼容.区分这些不同的失败情况可以让

[Swift中错误]missing argument label 'greeting:' in call

Swift 中出现这个问题:从第二个参数起,自动加上lable func sayHello(name:String? ,greeting:String)->String { let result = greeting + "," + (name ?? "Guest") + "!" return result } var nickname:String? nickname = "yc" //“Goodmorning前面应该

PDO 中支持三种错误处理模式:

PDO 支持三种错误处理模式: 静默模式,警告模式,异常模式 静默模式是默认的,需要修改的话,通过设置 PDO 对象的属性完成. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT)? $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING)?? $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT)?

operator is not a known binary operator swift 语法错误笔记

operator is not a known binary operator swift 语法错误笔记 error: operator is not a known binary operator for x in 1..10 版本更新,开区间  改为 "..<" var arr = String[]() array types are now written with the brackets around the element type 版本更新,改为var arr:[S

Swift—Cocoa Touch设计模式-备

目标(Target)与动作(Action)是iOS和OS X应用开发的中事件处理机制.   问题提出 如图所示是一个ButtonLabelSample案例设计原型图,其中包含一个标签和一个按钮,当点击按钮的时候,标签文本会从初始的Label替换为HelloWorld. ButtonLabelSample案例首先要解决的问题是:按钮点击事件后有谁负责响应事件?谁进行事件处理?要答这个问题,可以打开ButtonLabelSample案例故事板文件Main.storyboard,如图所示,OK按钮是在