次のコードがあります。
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name like[c] %@", projectName];
[fetchRequest setPredicate:predicate];
[moc executeFetchRequest:request error:error]; // moc & error are defined elsewhere
projectName を「asdf」にしてこのコードを実行すると、すべてうまくいきます。ただし、値が「asdf\」に設定されている場合 (末尾のバックスラッシュに注意してください)、次の例外が表示されます。
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'The backslash is a wildcard char, and cannot appear unescaped at the end of a string.'
po リクエストにより、次の情報が得られます。
po request
<NSFetchRequest: 0x101348ee0> (entity: Project; predicate: (name LIKE[c] "asdf\\"); sortDescriptors: ((null)); type: NSManagedObjectResultType; )
これは単純な問題のように思えますが、インターネット上で解決策を見つけることができません。