修改NSError localizedDescription

时间:2014-03-11 20:42:51

标签: ios cocoa-touch cocoa nserror

你们知道有没有一种很好的方法来设置/修改NSError的localizedDescription,而不是重新创建它之后实例化它?我没找到。

3 个答案:

答案 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对象时使用的任何类