你们知道有没有一种很好的方法来设置/修改NSError
的localizedDescription,而不是重新创建它之后实例化它?我没找到。
答案 0 :(得分:20)
NSError
类与许多Cocoa类一样 - 不可变。
但是,文档指出-localizedDescription
:
默认情况下,此方法返回用户信息字典中的对象 对于关键的NSLocalizedDescriptionKey。如果用户信息字典 不包含NSLocalizedDescriptionKey的值,默认值 string是从域和代码构造的。
因此,只需使用errorWithDomain:code:userInfo:
创建新实例或复制并提供适当的用户信息。
Here's NSError类的另一个不错的introduction。
答案 1 :(得分:8)
NSError
声明其属性没有setter。从中可以推断出它可能不是在创建后修改的。我可以看到在NSError
上编写一个类别,该类别会在另一个错误中产生错误,但NSLocalizedDescriptionKey
键的值不同。
答案 2 :(得分:5)
如果您手动指定userInfo
创建NSError,则可以为密钥NSLocalizedDescriptionKey
重写此字典的值。只需将error.userInfo
强制转换为NSMutableDictionary或创建NSError对象时使用的任何类