この文字列「193e00a75148b4006a451452c618ccec
」でmy_column値を持つ行をフェッチするNSPredicate
を書き込もうとすると、以下のクラッシュが発生します。
キャッチされない例外「NSInvalidArgumentException」が原因でアプリを終了します、理由:「フォーマット文字列「my_column = 193e00a75148b4006a451452c618ccec」を解析できません」
私の述語
fetchRequest.predicate=[NSPredicate predicateWithFormat:[NSString stringWithFormat:@"%@==\"%@\"",attributeName,itemValue]];
これも試しました
fetchRequest.predicate=[NSPredicate predicateWithFormat:[NSString stringWithFormat:@"%@ == %@",attributeName,itemValue]];
この
fetchRequest.predicate=[NSPredicate predicateWithFormat:[NSString stringWithFormat:@"%@ = %@",attributeName,itemValue]];
この
fetchRequest.predicate=[NSPredicate predicateWithFormat:[NSString stringWithFormat:@"%@=\"%@\"",attributeName,itemValue]];
助けてください。
私はマーティンRの答えを試していたときにこれを見つけました
fetchRequest.predicate=[NSPredicate predicateWithFormat:@"%@==%@",attributeName,itemValue];
渡したattributeNameには ''が付いているので、attributeNameを外してハードコードすると、うまく機能します。
文字列を一重引用符で囲みます。
[NSPredicate predicateWithFormat:@"my_column = '193e00a75148b4006a451452c618ccec'"]
またはbetter、引数の置換を使用:
[NSPredicate predicateWithFormat:@"my_column = %@", @"193e00a75148b4006a451452c618ccec"]
2番目の方法は、検索文字列に'
や"
などの特殊文字が含まれている場合の問題を回避します。
注釈:述語を構築するときにstringWithFormat
を使用しないでください。 stringWithFormat
とpredicateWithFormat
は%K
と%@
のフォーマットを異なる方法で処理するため、これらの2つの方法を組み合わせるとエラーが発生しやすくなります(不要です)。
等しいかどうかを確認するときに、あなたが見逃したと思います
今試してください、
[NSPredicate predicateWithFormat:@"my_column='193e00a75148b4006a451452c618ccec'"];
試す
//Case Insensitive
fetchRequest.predicate=[NSPredicate predicateWithFormat:@"%K = [cd] %@",attributeName,itemValue];
//Case sensitive
fetchRequest.predicate=[NSPredicate predicateWithFormat:@"%K = %@",attributeName,itemValue];