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

  • Khan Academy

    Khan Academy

    17 Kasım 2006
  • Video-Tutorials.Net

    Video-Tutori

    15 Mart 2011
  • World Science Festival

    World Scienc

    1 Mayıs 2008