2016-03-23 4 views
0

есть ли способ проверить данные ядра из Xcode?swift: проверить записи в основных данных

Я создал две функции (запись в БД, чтение из БД), которые не сбой, но чтение возвращает пустой массив, когда он должен возвращать записанные данные.

Функции:

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!") 
     } 
    } 

Я хотел бы проверить с Xcode, если есть какие-либо записи в моем CoreData сущности. Это возможно?

благодарит

ответ

0

Вы на самом деле меняется один и тот же объект ядра данных внутри цикла. Таким образом, в конце цикла вам останется только один объект с последним именем страны в массиве. Вы должны создать newRecord внутри цикла каждый раз вместо этого.

Переместите эту линию внутри цикла for, и она должна работать нормально.

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

Обратите внимание, что вы создаете основные данные управляемого объекта и его изменения внутри цикла и сохранения сохраняет тот же объект несколько раз. Если вы хотите сохранить несколько объектов, вам нужно каждый раз создавать новый объект, устанавливать его значения и затем сохранять. Вы также перемещаете запасную часть за пределы цикла.

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

это то, что я пытаюсь сделать - проверить если запись работает хорошо :) Я думал, что должен быть способ, чтобы проверить записи в CD с Xcode – Almazini

+0

Возможно не лучший способ, но то, что мы иногда делаем это войдите в постоянный путь хранилища, а затем откройте это окно в Finder и посмотрите, будут ли созданы необходимые файлы CoreData после записи. Конечно, это работает только в Simulator, но для тестирования это достаточно хорошо. Вы можете увидеть, правильно ли написана БД. Грубый способ узнать, записывается ли БД свойство. Вы также можете проверить сам код, чтобы увидеть, есть ли файлы и размер больше нуля. Не могли бы вы добавить код, который у вас есть для записи и чтения из БД? –

+0

Да, это сработает для меня. Мой вопрос в вопросе. Пожалуйста, проверьте! Можете ли вы посоветовать, где искать и какие файлы должны быть созданы? Спасибо – Almazini

Смежные вопросы