2012-10-23 12 views
22

Çekirdek verilerde, bir işletmede birden fazla anahtar kelime olduğunda, çok sayıda anahtar kelimeniz varsa, NSManagedObject jeneratörü alt sınıfında, Apple NSArray yerine NSOrderedSet kullanacaktır.Apple neden CoreData'da sipariş edilen mutli değer ilişkisi için NSArray yerine NSOrderedSet kullanıyor?

NSOrderedSet'te sahiplik denetimi biraz daha hızlı dışında hemen hemen her ikisi de eşittir.

Apple'ın daha tanıdık ve ünlü NSArray'ı neden kullanmamasının bir nedeni var mı?

cevap

61

Benim tahminim şöyle olacaktır: NSOrderedSet sırasız ilişkiler için NSSet benzer ayrı unsurların bir koleksiyon yönetir çünkü.

NSArray ile, başka bir nesneyle ilgili bir kereden fazla bir nesne oluşturabilirsiniz. docs itibaren

+0

Ahh .... Farklı olmalılar ..... Muhtemelen bu doğru cevaptır. –

+1

Bu yüzden, neden NSArray kullanacak? – PostCodeism

+10

@PostCodeism - Çünkü birbirinden bağımsız konumlarının önemli olduğu bir dizi farklı olmayan öğeleri saklıyor olabilirsiniz. IE, belki bir kelimeyi veya bir şarkıyı temsil eden nota dizisini temsil eden bir dizi harfiniz var. Harfler bir kelimede tekrarlanabilir ve notalar bir şarkıda tekrarlanabilir, bu yüzden tekrarlanan öğeleri görmezden gelmemelidir, onları yeniden düzenlerken aynı sözcük veya şarkıyı vermezsiniz, bu yüzden siparişi de takip etmelidir. Yinelenebilecek sipariş öğelerine ihtiyacınız varsa, bir NSArray'a ihtiyacınız vardır. – ArtOfWarfare

13

:

yapabilirsiniz öğelerin sırası bir nesne kümesi bulunup bulunmadığının test önemli ve performans üyeliği için gelişmeler de test olduğunda diziler alternatif olarak sipariş setleri kullanmak Bir dizinin bir kümesi üyeliği testinden daha yavaştır.

+0

Bu dokümanları okudum. Küçük üyelik kontrolünün çoğu üyeliğin sayısının düşük olması nedeniyle verilen sebepten dolayı çok önemsiz gözükmektedir. Bence Martin cevap doğru olanı. +1 hala. –

İlgili konular