Ne tür bir veriyi kaydetmek istediğinize ve yalnızca dahili olarak mı kullanacağınıza veya verileri harici bir hizmetle değiştirmeniz gerektiğine bağlıdır.
NSCoding genellikle bir veri toplayıcıdır. Bir çok yerleşik nesne, onları ikili bir akış olarak kaydetmenize izin veren NSCoder protokolünü uygular (dosya, bir BLL'nin bir BLOB'sinde, vb.) NSKeyedArchiver, bir dize etiketine dayanarak bu tür akışlarda arama artığı sağlar. Bir sözlük gibi biraz ama sadece dizeleri anahtar olarak kullanabilirsiniz. Bu yaklaşım, bazen farklı sınıfların bazı nesnelerini devam ettirmek zorunda kalırsanız iyidir.
Ancak aynı sınıfın birçok nesneler varsa, daha iyi bir veritabanı yaklaşım, SQLite veya CoreData için gidersiniz. CoreData, veri modelinizi tasarlayan bir çok şeyi kolaylaştıran SQLite etrafında bir paketleyicidir ve SQL deyimlerini yazmak zorunda kalmadan, DB'nin perde arkasındaki sorguları yapar. CoreData'da sınıflarınızı tanımlarsınız ve sınıfın her bir örneği kalıcı olabilir, yani nesnenin üyelerini her zaman hafızada tutmadan geri alabilirsin. Bu, birçok yapısal veriyi saklamak için çok uygun bir yoldur. Örneğin, bir web tarayıcısı yazdıysanız, kullanıcının yer imlerini ad, URL ve belki de en son ziyaret edilen zaman ile saklayabilirsiniz.
XML ve JSON için, verileri yalnızca yerel olarak aygıta kullanırsanız, belirli bir avantaj yoktur. Bazı harici servislerle iletişim kurmanız gerekiyorsa, XML/JSON nesnelerini daha sonra kullanmak üzere olduğu gibi önbelleğe almayı/kaydetmeyi düşünebilirsiniz. Diğer yaklaşım, bu veriyi ihtiyaç duyduğunuz her zaman iç veri yapılarınızdan (yukarıya bakınız) yeniden oluşturmak olacaktır.
Veri modelinizi kendiniz tasarlıyorsanız, plist kullanmak için daha az puan görürüm, ancak belki biri beni düzeltir.
DÜZENLEME: Buraya NSCoding, Core Data ve bonus olarak SQLite'u kullanma hakkında öğreticiler için kısa bir bağlantı başvurusu ekleyin.
UPDATE 12.01.2016: Kalıcılık çözümleri arıyorsanız Realm numaralı telefonu da incelemenizi öneririz.
Muhtemel Kopyaları: http://stackoverflow.com/questions/4989609 http://stackoverflow.com/questions/840634 –
sqlite, coredata içinde kabul edilir. Ve önerdiğiniz ilk bağlantı, özellikle sqlite3 vs nscoding hakkında konuşuyor; çok cevapsız. Daha genel sorular soruyorum. Verilerle uğraşmak için neden bu kadar çok seçenek var. Bir sqlite blob dosyaları serileştirilirse, bu – LolaRun