NSString中的对象太多了? %@。%@。%@产生格式错误

时间:2015-08-28 18:03:20

标签: ios objective-c

   NSLog(@"here is date string %@", dateString);
   NSLog(@"here is file name %@", [NSString stringWithFormat: @"%@.%@.%@.%d.MOV", self.latitude, self.longitude, dateString, rand_int ]);

结果

2015-08-28 13:57:55.378 video[709:261408] here is date string 2015-08-28
2015-08-28 13:57:55.379 video[709:261408] here is file name 40.747062.-73.915204.@.363582320.MOV

似乎连续3 %@'s应该是lat, lon, and dateString,而是最后.%@.似乎在打印输出中变成普通的旧@。我错过了什么?

2 个答案:

答案 0 :(得分:4)

你的第三个和@之间的格式字符串中有一个gremlin(控制字符)。您可以通过将插入点放在@和退格后两次,然后重新输入@来修复它。

如果您在进行我描述的更改之前在TextMate中打开文件,您将看到额外的字符:

Control character

(OS X的编译器显示了对此gremlin的警告,但它并不完全有用。)

答案 1 :(得分:4)

我复制并粘贴了您的代码 - 这是我在调试器中看到的:

[NSString stringWithFormat: @"%@.%@.%<U+0013>@.%d.MOV"]

所以你的格式字符串中显然有一些无打印字符。