2010-09-08 23 views
6

SQLite kalıcı bir mağaza kullanıyorum. Bir çok ilişki Bear ile bir NSManagedObject sınıf Den var. Bear çeşitli alanlar vardır:NSPredicate bir çok ilişkiyi birden çok alana başvuruyor?

Bear: 
    breed 
    color 
    age 
    ... 

ben belli alan değeri ile ilgili Bear sahip nesnelere filtre, benim Den nesneler için istekleri getirmek inşa ediyorum:

NSPredicate *hasGrizzlyPred = [NSPredicate predicateWithFormat:@"ANY Bear.breed == 'grizzly'"]; 

Veya sadece can aramak için herhangi bir şekilde

NSPredicate *hasBrownBearPred = [NSPredicate predicateWithFormat:@"ANY Bear.color == 'brown'"]; 

Ama var: kolayca bir kahverengi ayı olan bir Den aramak Hem kahverengi hem de grizzly olan bir ayı olan bir Den? Aşağıdaki yasal ama yanlış bence:

// Not quite right: search for a den with a brown bear AND a grizzly 
NSPredicate *hasBrownAndGrizzlyPred = [NSPredicate predicateWithFormat:@"ANY Bear.color == 'brown' AND ANY Bear.breed == 'grizzly'"]; 

cevap

6

Bir SUBQUERY yüklem ifadesi ile yapabilirsiniz. kahverengi ve bir boz hem (DenBear bir çok ilişki bears seçti) bir ayıyla dens için bir sorgunun durumunda:

[NSPredicate predicateWithFormat:@"SUBQUERY(bears, $b, $b.color=='brown' AND $b.breed=='grizzly')[email protected] > 0"];

+0

Çekirdek Veri dokümantasyon beni bırakır ... bazen sinirlendi. Bu harika. –

+1

'NSExpression' belgelerine birçok insanı işaret ettim. Lütfen bugreporter.apple.com adresinden bir hata raporunu belgelerinizde dosyalayın ve daha önce nasıl bulabileceğinize dair nasıl bir teklif verilebileceğini önerin. –

+0

bunu kaydetme olasılığı var mı? – Piero

İlgili konular