2012-09-28 17 views
21

To-Many ilişkiler NSSet tarafından temsil edilmektedir (otomatik olarak Editor kullanılarak oluşturulan ... NSManagedObject alt sınıfı oluşturmak .. menüsü. Bir NSSet *?NSSet (Objective-C) - Çekirdek Verilerde - Çok Sayıda ilişki gösterimi - nasıl etkin bir şekilde yinelenir? Çekirdek Veri

yineleme için en etkili yol olduğunu

NSSet* groups2 = [contact groups]; 
NSArray* groupsArray = [groups2 allObjects]; 
for(Group* group in groupsArray) { 
    NSString* groupName = [group name]; 
} 

veya başka bir şekilde

NSSet* groups = [contact groups]; 
for(Group* group in groups) { 
    NSString* groupName = [group name]; 
} 

veya

?

+0

Bu sayfa: http://cocoawithlove.com/2008/08/nsarray-or-nsset-nsdictionary-or.html bir NSArray üzerinden yineleme NSSet, 0.004713 sn vs 0.025864 sn daha hızlı olduğunu söylüyor. – ikevin8me

cevap

18

ilk muhtemelen daha verimlidir. t ise sonuncusu daha verimli oldu, o zaman Apple eskiyi uygulamak için bu rotayı kullanırdı.

Diyorsunuz ki, eğer performans sorusu bir sorun gibi göründüğü için soruyorsanız, büyük olasılıkla, hata veren nesnelerin Çekirdek Verileri üzerinde çok fazla zaman harcıyorsunuz demektir. Akıllı bir hareket, groups ile self in %@'da bir getirme yapmak olacaktır; getirme isteğinin returnsObjectsAsFaults numarasını NO olarak ayarlayın ve uygun relationshipKeyPathsForPrefetching belirtildiğinden emin olun. Bunun net etkisi, yinelenmek üzere olduğunuz tüm verilerin, çok sayıda ayrı gezilerde talep üzerine getirilen her bir parçasından ziyade, destek mağazasına tek seferde getirilmesidir.

+1

Referans: [Artan Arıza Giderimi] (https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CoreData/Performance.html#//apple_ref/doc/uid/TP40001075-CH25-SW7) Apple belgeleri –

İlgili konular