我已经广泛搜索以找到解决此问题的方法。我的所有尝试都会导致0结果。以下是一般数据结构:
Core Data Entity A {
stringAttribute string
....
transformableAttribute(NSArray of NSString objects) keywords
}
其中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]
---->导致非关系不能是子查询集合的错误
我已经尝试了上述的一些排列,但仍然没有结果。有什么建议?这可能与核心数据有关吗?
谢谢!
答案 0 :(得分:0)
我没有使用transformableAttribute
,这是我没有进入的核心数据元素,但如果我记得你无法预测它们。 (所以,如果我错了,请有人打电话给我)
但当我看到你的transformableAttribute
是array of string
时,我只想说why do you want an array in a database?
为什么不建立关系?如果您的数组可以具有不同数量的字符串,则为一对多关系。
核心数据是数据库的抽象,在不使用数组的数据库中,您使用表。这可能会简化你的生活并使得抓取成为可能。