【发布时间】:2017-07-05 13:14:51
【问题描述】:
假设我有一个用于NSPredicate 规则的核心数据数据库。
enum PredicateType,Int {
case beginswith
case endswith
case contains
}
我的数据库如下所示
+------+-----------+
| Type | Content |
+------+-----------+
| 0 | Hello |
| 1 | end |
| 2 | somevalue |
| 0 | end |
+------+-----------+
我有一个内容“这是结束”。如何查询 Core Data 以检查是否有任何规则满足此内容?它应该在桌子上找到第二个条目
+------+-----------+
| Type | Content |
+------+-----------+
| 1 | end |
+------+-----------+
但不应该找到
+------+-----------+
| Type | Content |
+------+-----------+
| 0 | end |
+------+-----------+
因为这句话中end不在开头。
目前我正在获取所有值,使用 Content 和 Type 创建谓词并再次查询数据库,我认为这是一个很大的开销。
【问题讨论】:
-
你只有3种吗?
-
我现在有 3 种类型,但我打算增加类型。我想您想建议,检查所有 3 种类型并检查是否匹配?但这也是一个小表,我还有谓词的其他属性以及不区分大小写等。
-
我不太明白。你有一个或两个数据库,其中一个是价值和内容?您要查询哪个数据库?
-
我有包含
NSPredicate规则的数据库,例如BEGINSWITH, ENDSWITH, CONTAINS我想查询数据库中的所有规则,以了解是否有适合内容的NSPredicate规则。 -
我会将规则加载到内存中,为每个规则创建(或存储/加载)谓词并使用块过滤规则。另一个想法(不知道是否可行):在数据库中添加一个正则表达式并使用诸如“'This is end' MATCHES contentRegex”之类的谓词。
标签: swift core-data nspredicate