2011-08-14 37 views
10

Uygulamam, İnternet üzerinden büyük bir json dosyası almayı ve ardından Temel Veriler'e ayırmayı içeriyor.Temel Verilerin Doldurulmuş sürümü?

Thats ince, ama nasıl benim app içine bu Çekirdek Veri veritabanının zaten doldurulmuş sürümünü almak, bu yüzden ilk başlatarak hemen orada olduğunu olabilir. Ve kullanıcı daha sonra yenilemeye karar verebilir.

cevap

2

Çekirdek Verileri veritabanı yalnızca bir SQLite veritabanı dosyasıdır. Ana paketinize teslim edebilir ve ardından kalıcı mağaza koordinatörünüzle ilişkilendirmeden önce belgeler klasörünüze kopyalayabilirsiniz.

9

Ray Wenderlich's site önceden yükleme üzerinde yaklaşık makul bir öğretici var.

Genellikle -, ayrı bir proje oluşturun bir çekirdek veri veritabanına JSON dosyasını ayrıştırmak. Gerçek projenizi oluşturun, Object modelini ve veritabanı dosyasını bu yeni projeye kopyalayın.

Şimdi, app de, başlangıç ​​veritabanı belgenin dizinde var olup olmadıklarını ve bunları yapmazsa, uygulama paket adresinin önceden doldurulmuş bir kopya.

Kalıcı Mağaza Koordinatörü belgeler klasöründe veritabanında değil uygulama demetinde bir ile çalıştığından emin olun.

Güncellemesi Haziran 2012

Ben GitHub'dan üzerinde küçük bir örnek proje Çekirdek Veriler için veri yükleme bir iPad projesi ve bir OS X projesi ile bir Xcode Workspace kullanımını gösterir PromNight denilen var. Bu, ön yükleme sırasında değişikliklerin senkronizasyonda tutulmasına yardımcı olan iki uygulama arasında paylaşılan bir nesne modelini kullanır.

+1

+1. – Moshe

4

Çekirdek Veri (Mac OS, isteğe bağlı olarak bir XML dosyası üzerinde veya) esasen sqlite veritabanı yedekleme deposunun kullanır. Bu dosyayı uygulamanızın paketine eklemelisiniz ve uygulama ile birlikte göndermelisiniz. Bildiğim kadarıyla veritabanına veri alma gibi, burada ben öyle yapardım.

  1. Eğer bu kod içinde
  2. Run buna sahip olursa olsun biçimi veri almak için bazı kod yazın.
  3. Sqlite dosyasını aygıttan veya simülatörden kopyalayın.
  4. Xcode'ta projenize yeni oluşturulan sqlite dosyasını ekleyin.

Çekirdek Verileri sahnelerin arkasında bir miktar "voodoo" yaptığından ve sqlite ile uğraştığından dolayı sqlite dosyasını el ile oluşturamazdım. Ayrıca, geliştiricilerin birden fazla hedef kullandıklarını gördüm. ithalat için. Bu şekilde, bir derleyicide kod yazabilirler ve daha sonra proje bakımı konusunda endişelenmeleri gerekmez. Örneğin: Ray Wenderlich. Için

#ifdef kImportTarget 

//run core data import 

#else 

// run the Core Data stack setup from an existing file 

#endif 
+0

iOS'ta, bir XML yedekleme deposu seçeneğiniz olduğunu düşünmüyorum. Bu Mac OS için bir seçenek olsa da. – Abizern

+0

@Abizern - Emin misin? Belki de dokümanlardan bir alıntı alabilirsiniz. – Moshe

+0

Evet, eminim http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/CoreData/Articles/cdPersistentStores.html Dediği gibi - XML ​​mağazası iOS'ta mevcut değil. – Abizern