45

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

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

何も機能しません。-------------------------------------------------- --- その他のコード

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

1 に答える 1

121

最初の述語

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

listingID属性が等しくないすべてのレコードを検索するように機能する必要がありますsessionID(listingIDsessionIDが同じタイプである場合)。

両方が文字列で、部分文字列として文字列をlistingID 含まないすべてのレコードを検索する場合はsessionID、次の述語が機能するはずです。

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

文字列の比較を大文字と小文字を区別せずに行う必要がある場合は、"CONTAINS[cd]" を使用します。

: 属性名を引数として指定できますが、その場合は as%Kの代わりに次の%@形式を使用する必要があります。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT (%K CONTAINS %@)", @"listingID", sessionID];
于 2012-09-21T17:32:59.770 に答える