0

ここには「MATCHES」を使用した多くの解決策がありますが、この場合は単に機能しません。

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];
4

2 に答える 2

2

(バレンティンは、述語を作成するときに文字列書式設定関数を使用しないようにする必要があることは正しいです。あなたの場合はうまくいくかもしれませんが、書式指定子と引用規則が と の間stringWithFormatで異なるため、一般的にエラーが発生しやすくなりpredicateWithFormatます。)

述語の問題は、管理対象オブジェクト自体 (「SELF」) をパターンと比較できず、管理対象オブジェクトの特定の属性のみを比較できないことです。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"attribute MATCHES %@", @"[0-9]+.*"]
[request setPredicate:predicate];
于 2013-08-20T08:18:39.830 に答える
0

[request setPredicate:[NSPredicate predicateWithFormat:predicateStr]];置く代わりに使ってみてくださいNSString

于 2013-08-20T07:51:21.587 に答える