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

  • J Medema

    J Medema

    11 EKİM 2006
  • LardTardProductions's channel

    LardTardProd

    10 NİSAN 2009
  • SPBedition

    SPBedition

    24 HAZİRAN 2013