Temel Verilerde "yerel" bir dizi veya sözlük türü yoktur. Dönüştürülebilir bir öznitelik olarak bir NSArray
veya bir kaydedebilirsiniz NSDictionary
. Bu NSCoding
, diziyi veya sözlüğü bir NSData
özniteliğe serileştirmek (ve erişim üzerine uygun şekilde serisini kaldırmak için ) öğesini kullanır. Bu yaklaşımın avantajı kolay olmasıdır. Dezavantajı, diziye veya sözlüğe (veri deposunda bir BLOB olarak depolanır) sorgulayamamanız ve koleksiyonlar büyükse, veri deposuna / veritabanından çok fazla veri taşımanız gerekebilir (eğer SQLite veri deposu) yalnızca koleksiyonun küçük bir bölümünü okumak veya değiştirmek için.
Bunun alternatifi, dizi veya sözlük koleksiyonunun anlambilimini modellemek için Temel Verileri birçok ilişkide kullanmaktır. Diziler daha kolaydır, bu yüzden bununla başlayalım. Çekirdek Veriler-çok sayıda ilişki gerçekten bir seti modelliyor, bu nedenle dizi benzeri işlevselliğe ihtiyacınız varsa, kümeyi sıralamanız gerekir (getirilen bir özelliği kullanmak bunu yapmak için uygun bir yoldur) veya varlığa fazladan bir dizin özelliği eklemeniz gerekir dizi öğelerini depolar ve dizinleri kendiniz yönetir. Homojen bir dizi saklıyorsanız (tüm girişler aynı türdeyse), dizi varlıkları için varlık açıklamasını modellemek kolaydır. Değilse, öğe verilerini depolamak veya bir öğe öğeleri ailesi oluşturmak için dönüştürülebilir bir özellik kullanıp kullanmayacağınıza karar vermeniz gerekir.
Bir sözlüğü modellemek, büyük olasılıkla bir anahtar ve değer depolayan bir varlık kümesiyle çok sayıda ilişki gerektirecektir. Hem anahtar hem de değer, yukarıda açıklanan dizi için öğe varlığına benzer. Bu yüzden ya yerel türler (bunları önceden biliyorsanız), dönüştürülebilir bir öznitelik veya türe özgü varlıklar ailesinden bir örnekle ilişki olabilir.
Eğer bunlar kulağa biraz korkutucu geliyorsa, öyle. Temel veriler gibi şemaya bağlı bir çerçeveye keyfi veri eklemek zordur.
Adresler gibi yapılandırılmış veriler için, varlıkların açıkça modellenmesi için zaman harcamak neredeyse her zaman daha kolaydır (örneğin, adresin her bölümü için bir özellik). Bir sözlüğü modellemek için tüm ekstra kodlardan kaçınmanın yanı sıra, bu, kullanıcı arayüzünüzü kolaylaştırır (bağlamalar "sadece çalışır") ve doğrulama mantığınız vb.Çok daha fazla Çekirdek Veri tarafından işlenebildiğinden daha açıktır.
Güncelleme
OS X 10.7'den itibaren Temel Veriler, bir dizi yerine kullanılabilen sıralı bir set türü içerir. 10.7 veya üstünü hedefleyebiliyorsanız, bu, sıralı (dizi benzeri) koleksiyonlar için en iyi çözümdür.