7

Çekirdek Verileri çok ilişkilerle kullanırken, NSSortDescriptor kullanarak bir Parent öğeye dayalı bir getirme isteğini sıralamak çok zor olduğu uzun süredir devam eden bir sorun. children sayısı, bir Child varlık için bire çok ilişki vardır. Bu özellikle NSFetchedResultsController ile birlikte kullanışlıdır. Tipik olarak sıralama tanımlayıcısı başlatılırken: iOS 6.1tarihinde bir istisna 'Keypath containing KVC aggregate where there shouldn't be one; failed to handle [email protected]NSSortDescriptor, Çekirdek Veriye Birden Çok İlişkiye Ait Öğelerin sayısına göre sıralamak için

yılında

NSSortDescriptor *sortByNumberOfChildren = [[NSSortDescriptor alloc] initWithKey:@"[email protected]" ascending:NO]; 

sonuçları, ben bir tamsayı olarak benim yönetilen nesne modeline bir özellik olarak KVO erişimci -countOf<Key> ekleyerek bir düzeltme keşfetti yazın. Bu özellik için NSManagedObject alt sınıfımda hiçbir şey uygulamadım, çünkü tüm sihir kaputun altında gerçekleşiyor. (bakınız https://stackoverflow.com/a/15546371/2042527). Bununla birlikte, bu iOS 6.0 üzerinde çalışmaz. Ekleme

- (NSUInteger)countOfChildren{ 
     return [self.children count]; 
    } 

hem hem SDK'lardaki sorunu çözmek değil: İşte sizin NSManagedObject alt sınıfa aşağıdaki yöntemi ekleyerek sorunu giderir bulundu. Aksine, düzeltmeyi bozar.

Bunun neden bir ipucu olduğunu ve neden iOS 6.0 ile iOS 6.1 arasındaki Temel Veriler veya Kuruluş değişikliklerinden söz etmese de, ikisi arasında neden bir fark olduğu konusunda bir ipucu var mı?

+0

Bunu "NSManagedObjectModel" dosyasına eklediniz mi? Hatta bunun bile çalışmasına izin vermenin bile nasıl olduğunu görmek zor. "NSManagedObjectModel" diğer sınıflar ile herhangi bir ilişkisi yoktur. –

+0

Üzgünüm, kötüyüm, 'NSManagedObject' alt sınıfını da ikinci kez kastettim. Hatayı düzelttim. –

+0

Kesin sorununuz için bir çözüm değil, başka bir bakış açısı: Çocukları almayı ve farklı ebeveynlerin sayısını saymayı ne dersiniz? Belki bu [posta] (http://stackoverflow.com/questions/9157436/distinct-count-via-core-data-nsexpression-into-nsfetchedresultscontroller) size yardımcı olur. – Paul

cevap