步骤一:声明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相关推荐

  1. 探索 Swift 中的 MVC-N 模式

    作者:Marcus Zarra(twitter:@mzarra) Marcus 将会为大家介绍一种设计模式,他曾经在那些需要从互联网进行大量频繁数据请求的 iOS 应用当中使用此设计模式.这个设计采用 ...

  2. Swift41/90Days - 面向轨道编程 - Swift 中的异常处理

    问题 在开发过程中,异常处理算是比较常见的问题了. 举一个比较常见的例子:用户修改注册的邮箱,大概分为以下几个步骤: 接收到一个用户的请求:我要修改邮箱地址 验证一下请求是否合法,将请求进行格式转化 ...

  3. swift中使用core data

    在创建了.xcdatamodeld文件之后,需要创建相关的model,之后便是初始化CoreData.一般使用的是NSManagedObjectModel.NSManagedObjectContext ...

  4. 27.怎样在Swift中声明typedef?

    在OC中,我们经常会用typedef关键字来声明Block,例如: /*** 通用的空闭包类型,无参数,无返回值*/ typedef void (^GofVoidBlock)(void); 在Swif ...

  5. 在Swift中使用C语言的指针

    点击上方蓝字关注我,了解更多咨询 Objective-C和C语言经常需要使用到指针.Swift中的数据类型由于良好的设计,使其可以和基于指针的C语言API无缝混用.同时 Swift也可以自动处理大多数 ...

  6. 如何在Swift中发出HTTP请求?

    本文翻译自:How to make an HTTP request in Swift? I read The Programming Language Swift by Apple in iBooks ...

  7. 如何在 Swift 中进行错误处理

    作者:Olivier Halligon,原文链接,原文日期:2015-12-17 译者:JackAlan:校对:靛青K:定稿:Channe 今天的文章讲解如何在 Swift 中进行错误处理. 说实话, ...

  8. Swift中方法的多面性

    虽然 Objective-C 的语法相对于其他编程语言来说写法有点奇怪,但是当你真正使用的时候它的语法还是相当的简单.下面有一些例子: + (void)mySimpleMethod {// 类方法// ...

  9. 解决Swift中present(uiImagePickerController,animated: true,completion: nil)闪退的问题

    swift中开发选择图片上传,会使用到Tap Gesture Recognizer控件,对应 UITapGestureRecognizer API,以下是代码示例(取自IOS developer li ...

最新文章

  1. 【青少年编程】【四级】用逗号分隔列表
  2. C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 角色成员功能的改进支持公司加入到角色...
  3. Openresty (nginx + lua)
  4. html超文本链接本页面,从HTML语言到网上家园 第三章 超文本链接(1)-网页设计,HTML/CSS...
  5. React开发(165):ant design validateFields
  6. matlab编辑rayfile光源文件,rayfile网盘功能详解 rayfile网盘安装步骤及安装注意事项...
  7. win下常用快捷鍵及其作用
  8. 计算机课集体备课,《计算机应用基础》集体备课方案
  9. 渗透实战-guest账户-mimikatz-向日葵-sql提权-离线解密
  10. Java、JSP网上音像管理系统的设计与实现
  11. in_array函数漏洞
  12. 关于Google Chrome浏览器离线安装包下载方法
  13. Android: Android Studio 的模拟器一些使用问题
  14. win7磁盘清理_Win7系统使用久变慢怎么办?Windows7系统优化方法
  15. 相比REG007 不仅免费还好用 的手机号绑定查询工具
  16. ZOJ3549 Little Keng(快速幂)
  17. python三维建模可视化_用Python三维可视化-一个神奇的函数
  18. Mybatis的模糊查询写法
  19. 服务器——如何查看自己电脑的ip地址
  20. ArcGIS-云南滇池+抚仙湖流域地形图制作及使用图层下载(shp+dem)

热门文章

  1. form表单提交数据丢失问题
  2. CSDN怎么换行?添加空行
  3. 第一节 Java语言发展史
  4. java应用程序的执行起点是什么方法_Java应用程序的执行起点是____________方法。(3.0分)_学小易找答案...
  5. abstract class和interface的区别
  6. 数据结构之--冒泡排序的三种实现
  7. 推荐两款超实用的 gRPC 客户端调试工具
  8. 用Javascript滚动到页面底部,并能正确判断出页面已到底部的方法
  9. 复杂的c语言,C语言:复杂数据类型
  10. 实战爬虫-爬取红袖添香并存入数据库