微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Swift - 有没有办法在连接的字符串中包含单引号 (')?

如何解决Swift - 有没有办法在连接的字符串中包含单引号 (')?

我已经搜索了答案,但不幸的是我尝试过的任何方法都不起作用。 我的情况如下: 我有一组关键字,我正在构建一个 nspredicate 以过滤来自 CoreData 的数据。代码如下:

var strKeywordsOrFilter = "(1 == 1)" //just an initial {true} statement to assist with the OR conditional
for intIndex in 0...pInputWords.count - 1
{
    let strKeyword = "'" + pInputWords[intIndex] + "'"
    strKeywordsOrFilter = strKeywordsOrFilter + " OR (imageDescr CONTAINS[c] " + strKeyword + ")"
}

imageDescr 是我的 CoreData 中的实体属性之一。 我想要完成的是为数组 pInputWords 中存在的尽可能多的关键字创建一个串联的 OR 条件字符串。 当我调试打印变量 strKeywordsOrFilter 时,它在任何单引号字符之前不包含任何反斜杠,例如

(1 == 1) OR (imageDescr CONTAINS[c]  'camping') OR (imageDescr CONTAINS[c]  'lake')

但是当它到达“谓词”命令时相同的变量,它在每个单引号之前都包含反斜杠,例如

(1 == 1) OR (imageDescr CONTAINS[c]  \'camping\') OR (imageDescr CONTAINS[c]  \'lake\')

我尝试了多种解决方法,但似乎没有任何方法可以摆脱“\”。 任何帮助将不胜感激,因为我真的被卡住了!

解决方法

无需手动构建查询,也无需担心引号。您可以改用复合谓词和标准 predicate formatting%@ 表示值,%K 表示键):

let predicates = pInputWords.map { word in
    NSPredicate(format: "imageDescr CONTAINS[c] %@",word)
}

let finalPredicate = NSCompoundPredicate(orPredicateWithSubpredicates: predicates)

// Which gives:
// imageDescr CONTAINS[c] "camping" OR imageDescr CONTAINS[c] "lake"

ps。您的查询字符串在提供给谓词时产生相同的结果,这似乎很好

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。