Ç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ı?
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. –
Üzgünüm, kötüyüm, 'NSManagedObject' alt sınıfını da ikinci kez kastettim. Hatayı düzelttim. –
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