Tap*_*Pal 0 core-data nspredicate swift
我写了下面的谓词,但它崩溃了应用程序,原因是 'Unable to parse the format string "(rootActivityId IN 12,13 AND (activityType == 3 OR activityType == 2)) OR (activityId IN 12,13 AND (activityType == 3 OR activityType == 2))"'
let activityTypeClause = "(activityType == \(NSNumber(integer: ActivityType.TypeTwo)) OR activityType == \(NSNumber(integer: ActivityType.TypeOne)))"
fetchRequest.predicate = NSPredicate(format: "(rootActivityId IN \(activityIds) AND \(activityTypeClause)) OR (activityId IN \(activityIds) AND \(activityTypeClause))")
// activityIds contains coma separated string
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚我做错了什么.
来自IN的文档:
等效于SQL IN操作,左侧必须出现在右侧指定的集合中.例如,名字IN {'Ben','Melissa','Nick'}.集合可以是数组,集合或字典 - 在字典的情况下,使用其值.
这表明逗号分隔的字符串实际上应该是一个集合对象.NS我是不是很清楚它是否需要成为Swift的集合.
不评论它是否作为谓词,但以下不会给我一个解析错误:
let rootActivityId = "12"
let activityIds = ["12", "13"]
let pred = NSPredicate(format: "rootActivityId IN %@", argumentArray: [activityIds])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2681 次 |
| 最近记录: |