SORU
18 Kasım 2010, PERŞEMBE


Çekirdek Veri: çok-çok ilişki için NSPredicate. (&; birçok anahtar burada İzin Verilmiyor")"

İki varlık "adlı" ve "Yazı" olan pek çok ilişki var. Kategori var Kategori tüm makaleleri arar bir yüklem kurmak istiyorum.adı bazı değerine eşittir. Şu var:

 NSEntityDescription  *entityArticle   = [NSEntityDescription entityForName:@"Article" inManagedObjectContext:managedObjectContext]; 
 NSSortDescriptor  *sortDescriptor   = [[NSSortDescriptor alloc] initWithKey:@"title" ascending:YES];
 NSArray     *sortDescriptors  = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
 NSPredicate    *predicate    = [NSPredicate predicateWithFormat:@"categories.name == [cd] %@", category.name]; 

 [request setSortDescriptors:sortDescriptors];
 [request setEntity:entityArticle];
 [request setPredicate:predicate];

 NSMutableArray *results = [[managedObjectContext executeFetchRequest:request error:nil] mutableCopy];

 if ([results count] > 0)
  NSLog(@"Results found."); 
 else 
  NSLog(@"NO results found."); 

 [request release];
 [sortDescriptor release];
 [sortDescriptors release];

Aldığım hata *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'to-many key not allowed here'

İstenen veri almak için herhangi bir seçenek var mı?

CEVAP
18 Kasım 2010, PERŞEMBE


Bir koleksiyon (categories.name) skaler bir değer (category.name) karşılaştırmak için çalışıyoruz. Ya da toplama bir karşılaştırıcı (CONTAINS) kullanın, ya da bir yüklem değiştirici(ANY/ALL/SOME, vb.) kullanmak gerekir.

Kullanmayı deneyin:

[NSPredicate predicateWithFormat:@"ANY categories.name =[cd] %@", category.name];

Ya da:

[NSPredicate predicateWithFormat:@"categories.name CONTAINS[cd] %@", category.name];

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • iBand IguJoo

    iBand IguJoo

    25 AĞUSTOS 2006
  • Leigh Momii

    Leigh Momii

    10 Mayıs 2006
  • Marina and The Diamonds

    Marina and T

    8 Temmuz 2008