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

  • dcigs

    dcigs

    9 EYLÜL 2006
  • MkElite

    MkElite

    13 NİSAN 2012
  • Murray Winiata

    Murray Winia

    2 ŞUBAT 2009