尝试创建类似" test%40 test.l'"的字符串时出现EXC_BAD_ACCESS错误

时间:2015-04-08 00:41:22

标签: ios swift exc-bad-access

有人可以解释这种行为以及如何解决这个问题吗?我无法找到任何相关内容。

// everything is fine
var test1 = "String without percentage";
NSLog(test1);

// fine
var test2 = "String with percentage %";
NSLog(test2);

// fine
var test3 = "test@test.nl";
NSLog(test3);

// still fine
var test4 = "%";
NSLog(test4);

var test5 = "test%40test.nl";
NSLog(test5); // error: EXC_BAD_ACCESS (code=1, address=0x0)

我实际上可以在调试窗口中看到并打印字符串,但是当我尝试在代码中使用变量时,我一直收到错误。

test5   String  "test%40test.nl"    

2 个答案:

答案 0 :(得分:1)

NSLog使用%作为字符串插值字符(àlaprintf)。如果要打印百分号,则需要使用%%引用它。

NSLog(@"Here's a percent sign: %%");

它崩溃的原因是(我认为)它期望%t(ptrdiff_t)的字段宽度为40.你没有传递额外的参数,因此EXC_BAD_ACCESS

答案 1 :(得分:0)

要打印%,您需要:"%%"

var test5 = "test%%40test.nl";
NSLog(test5);