request.predicate=NSPredicate( format:"lnameID= \(light.valueForKey("lnameID"))",nil);
在 Swift 中使用request.predicate时,会出错。
如何以“xx”xx“xx”格式解决问题?
答案 0 :(得分:5)
构建谓词时不应使用字符串插值。这会给错 一旦有任何特殊字符(如。),就会在运行时结果或崩溃 单值或双引号中的值。
最好使用%@
占位符,例如:
let lnameID = light.valueForKey("lnameID") as String // assuming that it is a string
request.predicate = NSPredicate(format: "lnameID = %@", lnameID)
答案 1 :(得分:0)
您可以在字符串中放置转义引号和转义变量,如下所示:
request.predicate=NSPredicate( format:"lnameID= \"\(light.valueForKey("lnameID"))\"",nil)
或者您可以使用占位符%@
,其中生成引号,如Martin R的答案所示。使用转义引号是更快速的原生方式。