在字符串中使用双引号

时间:2015-01-20 01:53:56

标签: ios xcode

我正在构建在Xcode中包含双引号(“)的数据库查询。 例如,我有这行代码来生成我的查询:

NSString *query = [NSString stringWithFormat:@"SELECT id FROM site WHERE name = \"%@\"", siteName];

,其中

siteName = "TestSite"

在Xcode 5中一切正常我会得到正确的字符串:

query = "SELECT id FROM site WHERE name = "TestSite""

升级到Xcode 6后,如果我运行完全相同的代码,那么转义序列不起作用,我得到:

query = "SELECT id FROM site WHERE name = \"TestSite\""

我甚至尝试用双引号(34)的ASCII代码替换转义序列,如下所示:

NSString *query = [NSString stringWithFormat:@"SELECT id FROM site WHERE name = %c%@%c", 34, siteName, 34];

我仍然得到

query = "SELECT id FROM site WHERE name = \"TestSite\""

有谁知道为什么会这样?在Xcode 6中是否有一些不同的设置?

1 个答案:

答案 0 :(得分:1)

NSString *query = [NSString stringWithFormat:@"SELECT id FROM site WHERE name = ?"];
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(database, [query UTF8String], -1, &statement, nil)
    == SQLITE_OK) {
    sqlite3_bind_text(statement, 1, [name UTF8String], -1, NULL);

@rmaddy正在谈论这个问题,这绝对是最佳选择。在我开始像这样绑定之前,我一直没有尝试按照你的方式做到这一点。