【发布时间】:2012-01-13 03:28:03
【问题描述】:
我进行了广泛的搜索以找到解决此问题的方法。我所有的尝试都导致 0 结果。以下是一般数据结构:
Core Data Entity A {
stringAttribute string
....
transformableAttribute(NSArray of NSString objects) keywords
}
其中关键字 = [NSArray arrayWithObjects:@"string 1",@"string 2",@"string 3",nil]
我正在尝试运行谓词来搜索 NSArray 可转换属性。
我对实体 A 尝试了以下操作。核心数据存储是一个 sqlite 存储。
NSString *term = @"string 1";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY keywords like[cd] %@", term];
----> 结果 0 个匹配项
NSArray *termArray = [NSArray arrayWithObject:@"string 1"];
NSPredicate *predicate = [NSPredicate predicateWithFormat@"ANY keywords in %@", termArray];
----> 结果 0 个匹配项
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SUBQUERY(keywords, $x, $x like %@).@count > 0", term]
---->导致非关系不能是子查询集合的错误
我已经尝试了上述的一些排列,但仍然没有结果。有什么建议吗?核心数据可以做到这一点吗?
谢谢!
【问题讨论】:
-
我认为如果您将字符串数组作为一个单独的实体并使用关系将它们连接起来,生活会更轻松。如果像这样实施,您尝试做的事情很容易。
-
是的,我认为单独的实体是最好的,就像在 SQL 中一样。我希望避免进行迁移,但找不到更好的方法。我正在使用 fetchedresutlscontrollers,它需要通过谓词获取,我无法手动过滤。
标签: objective-c core-data nspredicate