2012-09-21 21 views
31

Bunun için yüksek ve alçak buldum ama cevabımı bulamıyorum. Belirtilen bir dizgiye eşit olmayan tüm kayıtların çekirdek verilerini sorgulamak istiyorum. Örneğin, geçerli oturum kimliğine eşit olmayan tüm kayıtlar. Bunları hiçbir şekilde denemedim:NSPiçin sorgulamak için sorguyu belirtin

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

Hiçbir şey çalışmıyor.HEEEEELP !!! ------------------------------------------------- ---- fazla kod

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

Eğer bütün bir yöntem sağlar ki? Emtpy veri getirebilirsin. – NeverBe

cevap

96

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

nitelik listingIDsessionID eşit değil tüm kayıtları bulmak için çalışması gerektiğini ilk yüklem (listingID ve sessionID aynı türde olması koşuluyla). Her iki dizeleri ve listingIDbir alt dize olarak dize sessionID içermiyor tüm kayıtları bulmak istiyorsanız

, o zaman bu yüklem çalışması gerekir:

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

kullanın eğer "[cd] İÇERİR" dizi karşılaştırması vaka ve aksan duyarsız yapılmalıdır.

NOT: Bir bağımsız değişken olarak öznitelik adı belirtirken, ancak o zaman biçimi olarak %K yerine %@ kullanmalıdır:

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

HECK YEAH! Bu hile yaptı. Hızlı soru, kör olmadıkça, Apple Predicate Programlama Kılavuzu'ndaki çözümünüzü okumadım. Rehberde mi özledim yoksa bu başka bir yerde mi kaplandı? (ileride başvurmak için soran) – sangony

+3

@sangony: Çekirdek Veri programlama ile başladığımda, yüklemelerle ilgili zorluklar da vardı, Ön Bilgilendirme Programlama Kılavuzu daha ayrıntılı olabilir. Muhtemel karşılaştırmalar, işlemler ve yüklemleri doğru sırayla birleştirmek bazen zor olur. “Kakao Tahminlerinin BNF Tanımı” nda her şeyin söylendiğini söyleyebilirdiniz :-) - Diğer insanların sorularını ve SO cevaplarını burada okuyarak çok şey öğrendim. –

+1

Bu yardımcıdır, ancak "NSPredicateEditorRowTemplate" işlevine "içermiyor" operatörünü eklemenin bir yolu var mı? Bir "NSContainsPredicateOperatorType" var, ancak bir "NSDoesNotContainPredicateOperatorType" var (bunu kaçırmadıkça). – Jon

İlgili konular