《从零开始学Swift》学习笔记(Day 52)——Cocoa错误处理模式
Swift错误处理模式,在Swift1.x和Swift 2.0是不同的两种模式。
Swift 1.x代码错误处理模式采用Cocoa框架错误处理模式,到现在Objective-C还沿用这种处理模式,而Swift2.0之后采用了do-try-catch错误处理模式。
下面的示例代码是从文件中读取字符串到内存中,如果使用Swift 1.x错误处理模式代码如下:
|  
       
       1
        
      
       2
        
      
       3
        
      
       4
        
      
       5
        
      
       6
        
      
       7
        
      
       8
        
      
       9
        
      
       10
         |  
      
      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在代码
|  
       
       1
        
      
       2
         |  
      
      let contents =NSString(contentsOfFile: filePath, 
                            
        encoding:NSUTF8StringEncoding, error: &err) 
        |  
    
方法调用过程中没有发生错误,否则说明有错误发生。
上述代码的构造函数,它的Swift语法定义如下:
|  
       
       1
        
      
       2
        
      
       3
         |  
      
      init?(contentsOfURL url:NSURL,
                
        encoding enc: UInt, 
                   
        error error: NSErrorPointer) 
        |  
    
构造函数的最后一个参数是NSErrorPointer(即NSError指针),那么在实际调用时候我们需要传递err变量地址(即&err),&是取地址符。当方法调用完成后,如果有错误则err变量会被赋值。
本文转自 tony关东升 51CTO博客,原文链接:http://blog.51cto.com/tonyguan/1748299,如需转载请自行联系原作者
关注公众号
					低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 
							
								
								    上一篇
								    
								
								《从零开始学Swift》学习笔记(Day 53)——do-try-catch错误处理模式
Swift 1.x的错误处理模式存在很多弊端,例如:为了在编程时候省事,给error参数传递一个nil,或者方法调用完成后不去判断error是否为nil,不进行错误处理。 1 2 3 4 5 6 letcontents=NSString(contentsOfFile:filePath, encoding:NSUTF8StringEncoding,error:nil) //error参数传递一个nil 或者 varerr:NSError? letcontents=NSString(contentsOfFile:filePath, encoding:NSUTF8StringEncoding,error:&err) 不好的编程习惯,由于Objective-C和Swift 1.x没有强制处理机制,因此一旦真的发生错误,程序就会发生崩溃。 同样的从文件中读取字符串示例,如果使用Swift2错误处理模式代码如下: 1 2 3 4 5 6 7 8 import Foundation do { //要做一些操作 letstr= try NSString(contentsOfFile:f...
 - 
							
								
								    下一篇
								    
								
								iOS APP提交上架最新流程(转)
时隔1年又让我鼓捣iOS,刚接手就是上架,经验值为0的我,虽然内心是拒绝的,但还是要接受这项任务滴!也就是在被拒后重新审核,再改在提交。。。这样 反复的过程中也对上架流程熟悉了好多,写篇帖子送给同为菜鸟的你,如果里面有很菜的东西,大牛请自动忽略,毕竟这也是还为菜鸟的我的备忘录呢! 一、证书的导出 1.1 前期工作 首先你需要有一个苹果的开发者帐号,一个Mac系统。 如果没有帐号可以在打开http://developer.apple.com/申请加入苹果的开发者计划。怎么申请网上有详细的介绍,因为我没有实际申请过,所以在此不多做介绍。 如果你已经有了一个IDP,打开https://developer.apple.com/并登录到苹果MemberCenter,登录以后可以看到下面这个界面,列出了你开发需 要的一些工具,支持,itunes app管理等内容。见下: 选择Certificates, Identifiers & Profiles(左边第二项),申请证书、App ID、设备等配置都在此处。见下: 以上是对应开发的不同版本对应的不...
 
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker快速安装Oracle11G,搭建oracle11g学习环境
 - CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
 - Docker使用Oracle官方镜像安装(12C,18C,19C)
 - CentOS7,CentOS8安装Elasticsearch6.8.6
 - Hadoop3单机部署,实现最简伪集群
 - CentOS7,8上快速安装Gitea,搭建Git服务器
 - CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
 - SpringBoot2配置默认Tomcat设置,开启更多高级功能
 - Linux系统CentOS6、CentOS7手动修改IP地址
 - MySQL数据库中FOR UPDATE的使用
 

			
				
				
				
				
				
				
				
微信收款码
支付宝收款码