2012-09-21 8 views
31

これについては高低に見えますが、私の答えは見つかりません。私は、指定された文字列と等しくないすべてのレコードのコアデータを照会することを検討しています。たとえば、現在のセッションIDと等しくないすべてのレコード。私は無駄にこれらを試してみました:NSPredicateで特定の文字列が含まれていないクエリ

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"listingID != %@", [sitListingID objectAtIndex:i]]; 

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%@ NOT CONTAINS[cd] %@",@"listingID", [sitListingID objectAtIndex:i]]; 

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%@ NOT CONTAINS %@",@"listingID", [sitListingID objectAtIndex:i]]; 

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"listingID NOT like %@", [sitListingID objectAtIndex:i]]; 

何もworks.HEEEEELPを! ------------------------------------------------- ----多くのコード

NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"ListingRecord" inManagedObjectContext:context]; 
    [request setEntity:entity]; 
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"sessionID <> %@", uniqueSessionListings]; 
    [request setPredicate:predicate]; 
    NSError *error = nil; 
    NSMutableArray *mutableFetchResults = [[context executeFetchRequest:request error:&error] mutableCopy]; 
+0

あなたは全体の方法を提供するだろうか? emtpyデータを取得できますか? – NeverBe

答えて

96

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"listingID != %@", sessionID]; 

属性listingIDsessionIDに等しくないすべてのレコードを検索するために動作するはずですあなたの最初の述語(listingIDsessionIDが同じ型を有することを条件とします)。両方が文字列であるとあなたがlistingID列として文字列sessionID含まれていないすべてのレコードを検索したい場合は

、この述語は動作するはずです:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT (listingID CONTAINS %@)", sessionID]; 

使用は、if「[CD] CONTAINS」文字列の比較は大文字と小文字の違いを区別せずに行う必要があります。

NOTE:あなたは、引数として属性名を指定することができますが、あなたは形式として代わりに%@%Kを使用する必要があります。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT (%K CONTAINS %@)", @"listingID", sessionID]; 
+1

HELL YEAH!それがトリックでした。クイックサイドの質問ですが、私が盲目的になっていない限り、Apple Predicate Programming Guideであなたの解決策を読んでいませんでした。私はガイドでそれを見逃しましたか、これは他のどこかでカバーされていますか? (将来の参照を求める) – sangony

+3

@sangony:私がCore Dataプログラミングを開始したとき、私は述語にも困難を感じましたが、述語プログラミングガイドはより詳細にできるでしょう。可能なすべての比較、演算、および述語を正しい順序で組み合わせることは、時には難しいことです。 "BNF Definition of Cocoa Predicates"ですべてが言われていると言うことができます:-) - 私はここで他の人の質問と回答を読んで多くを学びました。 –

+1

これは役に立ちますが、 'NSPredicateEditorRowTemplate'に「含んでいません」演算子を追加する方法がありますか? 'NSContainsPredicateOperatorType'はありますが、' NSDoesNotContainPredicateOperatorType'はありません(私がそれを逃していない限り)。 – Jon

関連する問題