iOS,核心数据。是否从表中请求以数字符号开头的所有记录,而无需额外的数据处理?
这里有很多使用“匹配”的解决方案,在这种情况下根本不起作用:iOS,核心数据。是否从表中请求以数字符号开头的所有记录,而无需额外的数据处理?,ios,core-data,nspredicate,numeric,nsfetchrequest,Ios,Core Data,Nspredicate,Numeric,Nsfetchrequest,这里有很多使用“匹配”的解决方案,在这种情况下根本不起作用: 2013-08-20 10:30:40.890 ColonialChadstone[2609:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unimplemented SQL generation for predicate (SELF MATCHES "[0-9]+.*")' 最终解决方案应如下所示
2013-08-20 10:30:40.890 ColonialChadstone[2609:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unimplemented SQL generation for predicate (SELF MATCHES "[0-9]+.*")'
最终解决方案应如下所示:
NSFetchedRequest *request = [[[NSFetchRequest alloc] init] autorelease];
NSString *predicateStr = [NSString stringWithFormat:@"SELF MATCHES '%@'", @"[0-9]+.*"];
[request setPredicate:predicateStr];
NSArray *resultArray = [context executeFetchRequest:request error:nil];
尝试使用
[request setPredicate:[NSPredicate predicateWithFormat:predicateStr]]
而不是放置NSString
(Valentin是正确的,在创建
谓词。它可能适用于您的情况,但通常容易出错,因为
stringWithFormat
和predicateWithFormat
之间的说明符和引用规则不同
谓词的问题在于无法比较托管对象本身(“SELF”)
对于模式,只有托管对象的特定属性:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"attribute MATCHES %@", @"[0-9]+.*"]
[request setPredicate:predicate];
您应该首先显示实际代码,而不是只请求解决方案。但是问题很清楚,这段代码并不影响它如何编译
setPredicate:
接受NSPredicate参数,而不是NSString。此外,我想说我自己找到了一个解决方案,但您的解决方案要好得多。我尝试使用NSCompoundPredicate,它包含许多类似“%@BEGINSWITH%@”的nspredicate
。我想我已经尝试了所有可能的论点组合