美文网首页iOS相关
Swift如何创建Error对象

Swift如何创建Error对象

作者: 囧书 | 来源:发表于2017-09-18 20:24 被阅读1373次

在Objc中,经常使用的NSError是一个类,使用其自带的类方法可以很方便地构造出一个NSError对象来。
即便是在Swift中使用NSError,也可以使用初始化方法,快速得到一个代表错误的对象。

NSError(domain: "", code: 0, userInfo: nil)

然而在Swift中,去掉NS以后的Error不再是一个类,它是个协议。

Error定义.png

那好,既然想要一个Error对象,而系统又没有现成可直接使用的类来创建错误对象,那就自己定义一个:

自定义一个Error.png

然后会发现其自带一个属性:localizedDescription,这个属性是对于一个Error来说最重要的属性之一,现在取出来看看是怎样的:

localizedDescription.png DESC

它有一个默认值:"操作未完成"。既然是自定义的Error,我们希望localizedDescription的值可以根据不同情况改变,当尝试进行error.localizedDescription = "xxx"这样的赋值操作时,会发现不允许,它是一个只读属性。

那就尝试一下在自定义的Error中"重写"这个属性吧,并让构造方法接受传参:

这里成功地把localizedDescription改掉了,但是在以前用这个方法是改不了的[懵]~
如果上一步没有把localizedDescription改掉,那么可以尝试去实现Error协议的子协议LocalizedError

LocalizedError.png

LocalizedError协议定义了4个属性,其中的errorDescription对应的就是localizedDescription的取值,比如可以这样写:

errorDescription.png

总结一下

  1. Error是个协议,要用它,得自己写个类遵循协议。
  2. localizedDescription属性可以在类里实现以达到赋值的目的。
  3. 如果实现localizedDescription属性,发现实际在取值时,并没有正确取到值,那么可以让自己的类去实现LocalizedError协议,并实现errorDescription属性。

相关文章

  • Swift如何创建Error对象

    在Objc中,经常使用的NSError是一个类,使用其自带的类方法可以很方便地构造出一个NSError对象来。即便...

  • Swift创建Error对象

    Error 在OC中,经常使用的NSError是一个类,使用其自带的类方法可以很方便地构造出一个NSError对象...

  • OC 创建对象和 Swift 创建对象的区别

    Objective-C创建对象的方法和 Swift 天差地别,Swift 创建对象的步骤可以简要总结为: 自底向上...

  • Swift 创建 Error、抛出或捕获异常

    在Swift,Error不是一个类,它是个协议,所以就需要我们来实现定义一个类实现异常的创建。 创建Error类 ...

  • javascript中的内置对象Error类型对象

    Error 通过Error的构造器可以创建一个错误对象。当运行时错误产生时,Error的实例对象会被抛出。Erro...

  • Swift中的懒加载

    OC中只要对象为nil 就会重新创建对象.Swift中为nil也算创建对象成功了, 因为Swift懒加载包含了可选值

  • Swift5.0的Runtime机制浅析

    导读:你想知道Swift内部对象是如何创建的吗?方法以及函数调用又是如何实现的吗?成员变量的访问以及对象内存布局又...

  • Swift底层进阶--006:内存管理

    强引用 Swift使用ARC管理内存OC创建实例对象,默认引用计数为0Swift创建实例对象,默认引用计数为1 上...

  • 《Effective Java》读书笔记(持续更新)

    引言 创建和销毁对象 何时以及如何创建对象,何时以及如何避免创建对象,如何确保创建的对象能够被适时地销毁,以及如何...

  • Go 文件I/O操作

    error接口 创建error 对象 自定义错误 panic 示例1 内置的panic()函数引发的panic异常...

网友评论

    本文标题:Swift如何创建Error对象

    本文链接:https://www.haomeiwen.com/subject/flobsxtx.html