修改NSError localizedDescription

use*_*560 13 cocoa cocoa-touch nserror ios

您是否知道NSError在实例化之后是否有一种很好的方法来设置/修改localgedcription,而不是重新创建它?我没找到任何.

cac*_*cau 20

这个NSError类 - 像许多Cocoa类一样 - 是不可变的.

但是,文件说明了-localizedDescription这一点:

默认情况下,此方法返回用户信息字典中的对象NSLocalizedDescriptionKey.如果用户信息字典不包含NSLocalizedDescriptionKey的值,则从域和代码构造默认字符串.

因此,只需使用errorWithDomain:code:userInfo:创建新实例或副本并提供适当的用户信息.

这是 NSError类另一个很好的介绍.


Sim*_*een 8

NSError声明其属性没有setter.从中可以推断出它可能不是在创建后修改的.我可以看到写一个类别NSError会产生另一个错误的错误,但NSLocalizedDescriptionKey键的值不同.


Kir*_*kov 6

如果您手动指定了NSError userInfo,则可以重写此字典的key值NSLocalizedDescriptionKey.只需转换error.userInfo为NSMutableDictionary或创建NSError对象时使用的任何类