2016-03-29 14 views
0

Kullanıcı ilk kez uygulamayı başlattığında önceden doldurulması gereken küçük bir veri alt kümesine sahibim. Varolan bir sqlite dosyası veya csv/json ile bir uygulamayı paketlemek gibi diğer seçeneklere baktım ama önceden yüklenmiş olması gereken veriler sadece var categories = [category1, category2, category3, category4] gibi bir veri modelinin 4 kaydı olduğu için, eğer daha fazla verimli olacağımı hissediyorum bu.Swift 2.1 - Bazı verileri ilk çalıştırmada yalnızca bir kez önceden doldurma (Temel Veriler)

Ancak bu ekleme aramasının yalnızca ilk çalışma zamanında yürütüldüğünden nasıl emin olabilirim?

cevap

1

benim uygulamaya ilişkin verileri önceden yüklemek ve Halledemeyeceğim iki yoldan bu bir:

  • sen (başlangıçta bu kontrol ardından aktarma yapılması ve var NSUserDefaults biraz bu da genişletilebilir ayarlayın Örneğin, yeni bir sürümdeki dosyaların kolayca güncellenmesine izin vermek için).
  • Herhangi bir şey yapmıyorsanız (zaten içe aktarıldığı gibi) belirli bir Varlık için nesne sayısını getirin.
+0

Teşekkürler. Çekirdek Verileri kullanarak Kategori varlığını kurdum ve kullanıcıların kendi kategorilerini varsayılan 4 ile birlikte eklemelerine izin veriyorum. Bu nedenle, Mümkünse Çekirdek Veri kullanım durumunu arıyorum. –

1

Bir Varlık için arama yapabilir ve bu varlık 0 sonuç döndürürse, ilk bilgi ile doldurabilirsiniz.

var managedContext: NSManagedObjectContext! 
let dataFetch = NSFetchRequest(entityName: "Data") 

var result:[MyData]? 
do { 
    result = try managedContext.executeFetchRequest(dataFetch) as? [MyData] 
} catch { 
    print("Error fetching data") 
} 

if let data = result { 
    if data.count == 0 { 
     //create your data and save it 
    } 
} 
+0

Teşekkürler. Bu kod bloğunu nereye yerleştirirdiniz? Kullanıcı oluşturma/güncelleme işlemi yürütürken bunu kontrol etmekten kaçınmak istediğim için, bu oluşturma/güncelleme işlevinin bir kısmını yapmak isteyip istemediğimi bilmiyorum. –

0

Bu muhtemelen çok geç geliyor ve büyük olasılıkla düzeltmişsinizdir, ancak bu sorunu biraz önce görmüştüm. Zaten verileri önceden yüklenmiş olsaydı

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 

    let defaults = UserDefaults.standard 
    let isPreloaded = defaults.bool(forKey: "isPreloaded") 
    if !isPreloaded { 
     preloadData() 
     defaults.set(true, forKey: "isPreloaded") 
    } 

    return true 
} 

Bu yolla, uygulama her zaman kontrol ediyorum ve bu olsaydı, onu atlamak:

Sen AppDelegate aşağıdaki gibi bir şey kurmak olabilir. Bu, bir çeşit kurulumun zaten bir preloadData fonksiyonuna sahip olduğunuzu varsaymaktadır.