for 循环后,NSMutableArray 中的字符串对象添加了未知引号

Unknown quotation marks added to string object in NSMutableArray after for loop

我有一个 NSString 对象数组,这些对象有一些不必要的字符(一个对象在控制台中看起来像这样:"\"stringContent\""),我正在使用下面的代码删除这些字符。它工作正常,但是当我记录 arr1 时,50-60% 的字符串有这样的引号 "stringContent",其他的没有。实际上我的问题是我不知道为什么会这样,因为当我在 for 循环中记录字符串时,它们没有引号。有人知道是什么原因造成的吗?

NSMutableArray * arr1 = [[NSMutableArray alloc ]init];

for (NSString *str in self.stringArray) {

    NSString *newString = [str substringToIndex:[brand length]-1];

    NSString *nwstr = [newString substringFromIndex:1];

    [arr1 addObject:nwstr];

    NSLog(@"string %@", nwstr);

}
NSLog(@"array %@", arr1);

其他可能有用的东西,当我调用它时,每个对象都出现在控制台中,就像 containsString 方法的引号被隐藏一样,因为很多不符合要求的 if 语句。

for (NSString *str in arr1) {


    if (![str containsString:@"\""]) {


        NSLog(@"XXX %@", str);

    }
}

当您对 NSArray 或 NSDictionary 进行 NSLog 时,元素以日志格式显示,其中可能(或可能不)包含无故引号、转义字符等。具体而言,引号用于字符串周围,除非字符串不包含非字母字符或空格。

更多细节: 实际发生的是 NSLog 在内部调用 [NSString stringWithFormat:] 或其亲属之一来格式化要记录的文本。 stringWithFormat: 依次调用参数列表中对应于 %@ 格式指令的每个对象的 description 方法。 NSArray 和 NSDictionary 的 description 方法添加了额外的字符。