Objective c NSLog输出中显示的新行字符

Objective c NSLog输出中显示的新行字符,objective-c,nsarray,nslog,Objective C,Nsarray,Nslog,我有以下方法: - (NSString *)description { return [NSString stringWithFormat:@"Attribute %@: %@", name, [values description]]; } 名称是字符串,值是NSArray。我有一个NSArray,里面有几个这样的东西 当我使用NSLog(@“attribute created:%@,[newAttribute description])打印属性时工作正常,并打印以下内容: 2012

我有以下方法:

- (NSString *)description {
    return [NSString stringWithFormat:@"Attribute %@: %@", name, [values description]];
}
名称是字符串,值是NSArray。我有一个NSArray,里面有几个这样的东西

当我使用
NSLog(@“attribute created:%@,[newAttribute description])打印属性时工作正常,并打印以下内容:

2012-12-08 14:38:06.883 DT[25684:303] Attribute created: Attribute color: (
    YELLOW,
    PURPLE
)
2012-12-08 14:38:06.884 DT[25684:303] Attribute created: Attribute size: (
    LARGE,
    SMALL
)
但是,如果我创建了一个NSMutableArray并在其中放置了几个属性对象,那么当我以相同的方式打印数组时,就会得到这个输出:

2012-12-08 14:38:06.887 DT[25684:303] Attributes: (
    "Attribute color: (\n    YELLOW,\n    PURPLE\n)",
    "Attribute size: (\n    LARGE,\n    SMALL\n)",
)

在这种情况下,它为什么要打印换行符?我如何防止它这样做?

这是因为当您使用方法“description”打印时,数据会转换为字符串,因此它不会显示换行符。但是,当您使用数组打印时,数组的内容不会转换为字符串,因此它会显示换行符。

这里似乎回答了这个问题:


基本上,如上文所述,字符\n在描述中不起作用,但出于某种原因,回车符起作用。因此,请尝试\r。我在Xcode 7中的重写描述方法中对此进行了测试,效果很好。

找到解决方案了吗?还是没有解决方案?把一个问题标记为重复问题是多么烦人啊。我会去声誉经纪人那里借一些,然后用它来标记为重复问题,然后赢得声誉,然后偿还声誉经纪人:P