【问题标题】:Beautify NSLog of NSArray & NSDictionary美化 NSArray & NSDictionary 的 NSLog
【发布时间】:2011-10-30 13:42:00
【问题描述】:

我正在处理深度嵌套的 NSArray 和 NSDictionary,至少可以说非常耗时。 [data objectatindex:0] valueForKey:@"blah"] 等等等等

有没有人知道一个不错的 iOS 类别来递归地记录结构、突出显示类型并显示值?

可能问得有点多,但你永远不知道 :)

【问题讨论】:

  • 类似于 plist 在 XCode 中的显示方式?这是要显示在设备上还是仅供您使用?

标签: ios nsarray nsdictionary


【解决方案1】:

这将在没有 NSLog 的情况下在控制台中打印。

在调试过程中,当你的断点在你的字典下面时,你可以在控制台输入

NSDictionary * myDict = ...;

我的字典

您将在控制台中获得打印的字典。

您甚至可以在控制台中将对象转换为其他类型:

【讨论】:

    【解决方案2】:

    可能是这样的?

    for (id key in dictionary) {
        NSLog(@"key: %@, value: %@ \n", key, [dictionary objectForKey:key]);
    }
    

    但我想不出任何让输出美观的好方法,除了将其复制并粘贴到 jsonFormatter 中(例如)

    编辑:@Andrey Starodubtsev 有以下 XCode > 5.x 的解决方案:

    NSLog( @"%@", dictionaryYouWantToPrint );
    

    【讨论】:

    【解决方案3】:

    嗯。简单

    NSLog( @"%@", dictionaryYouWantToPrint );
    

    为我输出以下结果:

    {
        id = 1;
        matchCount = 0;
        matchPattern = abcdef;
        number = "123456";
        sessionID = 5;
        status = Unknown;
        timerStart = 1367229348;
    }
    

    【讨论】:

      【解决方案4】:

      也许你可以在iOS5之后使用block,比如

      [anArray enumerateObjectsUsingBlock:^(id object, NSUInteger index, BOOL *stop) {
          NSLog (@"object->%@",object);
      }];
      
      [aDictionary enumerateKeysAndObjectsUsingBlock:^(id key, id object, BOOL *stop){
          NSLog(@"key->%@, value-> %@",key,object);
      }];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-10
        • 2011-01-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多