怎样在Swift中使用NSError
步骤一:声明NSError变量。
一定要加"?",不加或者加"!"都不行。由于使用了optional,所以要用var而不用let。
var error: NSError?
步骤二:使用的时候在变量前加上"&"。
NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers, error: &error)
之前遇到的坑是NSError使用的是"!",编译器老是说"Could not find member "MutableContainers",把我错误的引诱到其他地方。
在Objective-C中,方法接受NSError的类型是(NSError **),编译器接着把它转换成(NSError *__autoreleasing *)。
而在Swift中。方法接受NSError的类型是(NSErrorPointer),NSErrorPointer是AutoreleasingUnsafeMutablePointer<NSError?
>的别名。(alias)
typealias NSErrorPointer = AutoreleasingUnsafeMutablePointer<NSError?>
而AutoreleasingUnsafeMutablePointer<NSError?>事实上是一个结构体。
以下是使用的一个简单的样例。
let jsonString = "[{\"name\":\"benson\",\"age\":25}]"let data = jsonString.dataUsingEncoding(NSUTF8StringEncoding)var error: NSError?
let jsonObject: AnyObject? = NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers, error: &error) if let error = error { println(error.localizedDescription) } println(jsonObject)
WWDC2015引进了Swift2.0,并宣称年底开源。当中新增的一个特性是Error Handling Model,我们能够使用do try catch来处理可能会抛错的方法。OC里很多包括有NSError參数的方法转换到Swift2.0后都没有了,反而方法会声明抛出错误(throws)。
怎样在Swift中使用NSError相关推荐
- 探索 Swift 中的 MVC-N 模式
作者:Marcus Zarra(twitter:@mzarra) Marcus 将会为大家介绍一种设计模式,他曾经在那些需要从互联网进行大量频繁数据请求的 iOS 应用当中使用此设计模式.这个设计采用 ...
- Swift41/90Days - 面向轨道编程 - Swift 中的异常处理
问题 在开发过程中,异常处理算是比较常见的问题了. 举一个比较常见的例子:用户修改注册的邮箱,大概分为以下几个步骤: 接收到一个用户的请求:我要修改邮箱地址 验证一下请求是否合法,将请求进行格式转化 ...
- swift中使用core data
在创建了.xcdatamodeld文件之后,需要创建相关的model,之后便是初始化CoreData.一般使用的是NSManagedObjectModel.NSManagedObjectContext ...
- 27.怎样在Swift中声明typedef?
在OC中,我们经常会用typedef关键字来声明Block,例如: /*** 通用的空闭包类型,无参数,无返回值*/ typedef void (^GofVoidBlock)(void); 在Swif ...
- 在Swift中使用C语言的指针
点击上方蓝字关注我,了解更多咨询 Objective-C和C语言经常需要使用到指针.Swift中的数据类型由于良好的设计,使其可以和基于指针的C语言API无缝混用.同时 Swift也可以自动处理大多数 ...
- 如何在Swift中发出HTTP请求?
本文翻译自:How to make an HTTP request in Swift? I read The Programming Language Swift by Apple in iBooks ...
- 如何在 Swift 中进行错误处理
作者:Olivier Halligon,原文链接,原文日期:2015-12-17 译者:JackAlan:校对:靛青K:定稿:Channe 今天的文章讲解如何在 Swift 中进行错误处理. 说实话, ...
- Swift中方法的多面性
虽然 Objective-C 的语法相对于其他编程语言来说写法有点奇怪,但是当你真正使用的时候它的语法还是相当的简单.下面有一些例子: + (void)mySimpleMethod {// 类方法// ...
- 解决Swift中present(uiImagePickerController,animated: true,completion: nil)闪退的问题
swift中开发选择图片上传,会使用到Tap Gesture Recognizer控件,对应 UITapGestureRecognizer API,以下是代码示例(取自IOS developer li ...
最新文章
- 【青少年编程】【四级】用逗号分隔列表
- C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 角色成员功能的改进支持公司加入到角色...
- Openresty (nginx + lua)
- html超文本链接本页面,从HTML语言到网上家园 第三章 超文本链接(1)-网页设计,HTML/CSS...
- React开发(165):ant design validateFields
- matlab编辑rayfile光源文件,rayfile网盘功能详解 rayfile网盘安装步骤及安装注意事项...
- win下常用快捷鍵及其作用
- 计算机课集体备课,《计算机应用基础》集体备课方案
- 渗透实战-guest账户-mimikatz-向日葵-sql提权-离线解密
- Java、JSP网上音像管理系统的设计与实现
- in_array函数漏洞
- 关于Google Chrome浏览器离线安装包下载方法
- Android: Android Studio 的模拟器一些使用问题
- win7磁盘清理_Win7系统使用久变慢怎么办?Windows7系统优化方法
- 相比REG007 不仅免费还好用 的手机号绑定查询工具
- ZOJ3549 Little Keng(快速幂)
- python三维建模可视化_用Python三维可视化-一个神奇的函数
- Mybatis的模糊查询写法
- 服务器——如何查看自己电脑的ip地址
- ArcGIS-云南滇池+抚仙湖流域地形图制作及使用图层下载(shp+dem)
热门文章
- form表单提交数据丢失问题
- CSDN怎么换行?添加空行
- 第一节 Java语言发展史
- java应用程序的执行起点是什么方法_Java应用程序的执行起点是____________方法。(3.0分)_学小易找答案...
- abstract class和interface的区别
- 数据结构之--冒泡排序的三种实现
- 推荐两款超实用的 gRPC 客户端调试工具
- 用Javascript滚动到页面底部,并能正确判断出页面已到底部的方法
- 复杂的c语言,C语言:复杂数据类型
- 实战爬虫-爬取红袖添香并存入数据库