2011-09-09 14 views
0

私はCoreDataを使用しているアプリケーションで作業しています。nspredicate with coredata fetchrequest

名前 姓

私はそう私はエントリを更新する必要があります:私は、単純な構造を有する私のDBは、同じ名前との1でより多くのユーザーが含まれている場合

if (strLastname.lengt > 0) { 
    predicate = [NSPredicate predicateWithFormat:@"(dbName LIKE[c] %@ AND dbLastname LIKE[c] %@)", strName, strLastname]; 
else { 
    predicate = [NSPredicate predicateWithFormat:@"(dbName LIKE[c] %@)", strName]; 
} 

を今問題があります彼らは何の姓を持っていない、述語は常に名前がdbLastnameが「」のようなものである場合ので、私は確認する必要がありSTRNAMEのようである最初のエントリと一致しますが、それは失敗します。

if (strLastname.lengt > 0) { 
    predicate = [NSPredicate predicateWithFormat:@"(dbName LIKE[c] %@ AND dbLastname LIKE[c] %@)", strName, strLastname]; 
else { 
    predicate = [NSPredicate predicateWithFormat:@"(dbName LIKE[c] %@ AND dbLastname LIKE[c] '')", strName]; 
} 

述語はOKですが、fetchedObjectは空です。

何か助けていただければ幸いです。

私は同じ問題に遭遇したときの最大

答えて

0

方法が見つかりました。私は長さをチェックする。

[NSPredicate predicateWithFormat:@"(dbName LIKE[c] %@ AND not dbLastname.length > 0)", strName]; 
0

代わりのLIKEトライCONTAINSは、これは私のために問題を修正しました。また、すべてのスペルを正しくチェックすると、そこにスティックするフィールド名と変数に関係なく、述語は正しいです。

+0

私は好きではなく、含まれていない、含まれていない、いずれも動作しません。 – masgar

+0

方法が見つかりました。私は長さをcjeck。 [NSPredicate predicateWithFormat:@ "(dbName LIKE [c]%@およびdbLastname.length> 0ではない)"、strName]; – masgar

関連する問題