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

没有任何效果。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];
4

1 回答 1

121

你的第一个谓词

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

listingID应该努力查找属性不等于的所有记录sessionID(前提是listingID并且sessionID具有相同的类型)。

如果两者都是字符串,并且您想要查找listingID 不包含该字符串sessionID作为子字符串的所有记录,那么此谓词应该有效:

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

如果字符串比较应该不区分大小写和变音符号,请使用“CONTAINS[cd]”。

注意:您可以将属性名称指定为参数,但您必须使用%K而不是%@格式:

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