2016-03-23 20 views
0

Xcode'un çekirdek verilerini kontrol etmenin bir yolu var mı?swift: Çekirdek verilerdeki kayıtları kontrol edin

İki işlev oluşturdum (DB'ye yaz, DB'den oku), başarısız olan, ancak yazılan verileri döndürmesi gerektiğinde okuma, boş dizi döndürüyor.

Fonksiyonlar: Ben CoreData varlık herhangi kayıt varsa Xcode dan kontrol etmek istiyorum

func writeData() { 
     appDel = UIApplication.sharedApplication().delegate as! AppDelegate 
    context = appDel.managedObjectContext 

     let newRecord = NSEntityDescription.insertNewObjectForEntityForName("CountryList", inManagedObjectContext: context) as NSManagedObject 

     let timestamp = NSDate() 

     for geo in geoArray { 

     //geoArray - array of dictionaries ([CountryName: "Lithuania", TelCode: 370],[CountryName: "Belarus", TelCode: 375],[CountryName: "Latvia", TelCode: 371])    
     //geo - Dictionary of tipe <String: AnyObject> 
     // CoreData: countryName type is String 

     newRecord.setValue(timestamp, forKey: "dateUploaded") 
     newRecord.setValue(String(geo["CountryName"]!), forKey: "countryName") 

      do { 
       try context.save() 
       print("Saved successfully") 
      } catch _ { 
       print("there was issue saving data!") 
      } 

      } 


     } 







    func loadData(country: String) { 
     appDel = UIApplication.sharedApplication().delegate as! AppDelegate 
     context = appDel.managedObjectContext 


     results = [AnyObject]() 

     let request = NSFetchRequest(entityName: "CountryList") 
     request.resultType = NSFetchRequestResultType.DictionaryResultType 

     request.predicate = NSPredicate(format: "countryName = %@", country) 



     let sort1 = NSSortDescriptor(key: "dateUploaded", ascending: true) 

     request.sortDescriptors = [sort1] 

     do { 
      results = try context.executeFetchRequest(request) 
      print(results!) 

     } catch _ { 
      print ("error trying to fetch!") 
     } 
    } 

. Mümkün mü?

sayesinde

cevap

0

Aslında döngü içinde aynı çekirdek veri nesnesini değişiyor. Sonuç olarak, döngünün sonunda, dizideki son ülke adıyla tek bir nesne ile kalacaksınız. Döngü içinde her zaman bir newRecord oluşturmalısınız.

Bu satırı for döngüsünün içine taşıyın ve iyi çalışmalıdır. Bir çekirdek veri yönetilen nesne oluşturma ve döngü ve tasarrufu içine değişiyor

let newRecord = NSEntityDescription.insertNewObjectForEntityForName("CountryList", inManagedObjectContext: context) as NSManagedObject

Not aynı nesne birden çok kez kaydeder. Birden çok nesneyi kaydetmek istiyorsanız, her seferinde yeni bir nesne oluşturmanız gerekir, değerlerini ayarlayın ve kaydedin. Ayrıca, tasarruf bölümünü döngü dışında da taşırsınız. i yapmaya çalıştığım budur

func writeData() { 
    let appDel = UIApplication.sharedApplication().delegate as! AppDelegate 
    let context = appDel.managedObjectContext 
    let timestamp = NSDate() 
    for geo in geoArray { 
     let newRecord = NSEntityDescription.insertNewObjectForEntityForName("CountryList", inManagedObjectContext: context) as NSManagedObject 
     newRecord.setValue(timestamp, forKey: "dateUploaded") 
     newRecord.setValue(String(geo["CountryName"]!), forKey: "countryName") 
    } 
    do { 
     try context.save() 
     print("Saved successfully") 
    } catch _ { 
     print("there was issue saving data!") 
    } 

} 
+0

- kontrol etmek yazma iyi çalışır eğer :) Orada xcode – Almazini

+0

Muhtemelen iyi bir şekilde gelen CD'de kayıtları kontrol etmek için bir yol olabilir ama ne biz bazen yapmaktır gerektiğini düşündüm Kalıcı mağaza yolunu günlüğe kaydedip, ardından bu pencereyi Finder'da açın ve gerekli CoreData dosyalarının yazımdan sonra oluşturulup oluşturulmadığını görün. Tabii ki bu sadece Simülatörde çalışır, ancak test için bu yeterlidir. DB'nin düzgün yazıldığını görebilirsiniz. DB'nin özellikli olup olmadığını öğrenmenin kaba bir yolu. Dosyaların orada olup olmadığını ve sıfırdan büyük bir boyuta sahip olup olmadığını görmek için kodun kendisini de kontrol edebilirsiniz. Yazmak ve DB'den okumak için sahip olduğunuz kodu ekleyebilir misiniz? –

+0

Evet bu benim için çalışacaktı. Benim kodum söz konusu. Lütfen kontrol edin! Nereye bakacağınızı ve hangi dosyaların oluşturulmasını tavsiye edebilir misiniz? Teşekkürler – Almazini