Ios 如何在Xcode控制台中漂亮地打印NSError对象?

Ios 如何在Xcode控制台中漂亮地打印NSError对象?,ios,xcode,cocoa,macos,debugging,Ios,Xcode,Cocoa,Macos,Debugging,我在Xcode控制台中打印了一个NSError对象(通过NSLog(@“%@”,error);),对于某种类型的错误,我得到的结果如下: Domain=NSCocoaErrorDomain Code=133020 "The operation couldn’t be completed. (Cocoa error 133020.)" UserInfo=0xe939170 {conflictList=( "NSMergeConflict (0xe93cad0) for NSManagedO

我在Xcode控制台中打印了一个NSError对象(通过
NSLog(@“%@”,error);
),对于某种类型的错误,我得到的结果如下:

Domain=NSCocoaErrorDomain Code=133020 "The operation couldn’t be completed. (Cocoa error 133020.)" UserInfo=0xe939170 {conflictList=(
    "NSMergeConflict (0xe93cad0) for NSManagedObject (0x5dba970) with objectID '0x5dc26f0 <x-coredata://775D53AE-58A4-4B18-BA52-D46781A183AE/SomeObject/p1>' with oldVersion = 2 and newVersion = 3 and old object snapshot = {\n    creationDate = \"2011-08-24 06:52:22 +0000\";\n    prop1 = \"a65e349a-b315-488e-b7f8-e459e353fd6e\";\n    username = \"test-user\";\n    password = \"foobar\";\n} and new cached row = {\n    creationDate = \"2011-08-24 06:52:22 +0000\";\n    prop1 = \"a65e349a-b315-488e-b7f8-e459e353fd6e\";\n    username = \"test-user\";\n    password = \"foobar\";\n}"

本例中错误对象的违规部分(从中打印\n和\)是错误的
用户信息
字典中
冲突列表
键的值。

不是很酷的解决方案-您可以为NSError类编写自己的类别,并根据需要表示文本。

用户信息是NSError字典

 NSLog(@" error => %@ ", [errorOrNil userInfo] )
给我印一些像这样的东西

error => {
    NSLocalizedDescription = "User already exists";
    NSLocalizedFailureReason = "";
    NSLocalizedRecoverySuggestion = "Retry request based on information in `NSLocalizedFailureReasonErrorKey`";
    kinveyErrorCode = UserAlreadyExists;
    kinveyInternalErrorString = "";
    kinveyRequestId = e5be0aed155e4925b3365d57de3dc5b2;
} 
您也可以尝试:

 NSLog(@" error => %@ ", [errorOrNil localizedDescription] )
打印出:

You got an error: User already exists 

你试过简单的
NSLog(@“%@”,“error userInfo]);
po[error userInfo]
?是的,我试过打印error的
userInfo
。除了没有打印错误域和代码外,得到了与前一个相同的输出。
po[error userInfo]
是什么意思?
po[error userInfo]
是调试器打印用户信息字典的命令,类似于
NSLog
语句。我认为您不会找到一个很好的通用解决方案。错误有不同的用户信息字典。有趣的解决方案--但我正在寻找一个更通用的解决方案,因为我不知道在t例如,在这种情况下,错误的
userInfo
字典的@“conflictList”键是罪魁祸首。情况并非总是如此。
 NSLog(@" error => %@ ", [errorOrNil localizedDescription] )
You got an error: User already exists