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

  • Karan Thakur

    Karan Thakur

    23 HAZİRAN 2010
  • NPR

    NPR

    22 NİSAN 2006
  • pilslajt

    pilslajt

    20 HAZİRAN 2008