2016-01-29 3 views
0

Как заголовок, у меня есть массив из нескольких объектов, и я хочу сохранить их в основных данных (я понимаю, что мы не можем сохранить массив в основных данных, поэтому я разбиваю свой код на json [0] [i] ["ID «] .int формат), возможно, вам будет понятнее после прочтения моего кодаКаков правильный способ сохранения массива как данных в основных данных?

let appDel:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate 
    let context:NSManagedObjectContext = appDel.managedObjectContext 
    let newUser = NSEntityDescription.insertNewObjectForEntityForName("Users", inManagedObjectContext: context) as NSManagedObject 

    socket.on("reply") {data, ack in 
     let json = JSON(data) 
     print("database replied") 
     print(json[0].count) 

     for var i=0; i<json[0].count; ++i{ 
      newUser.setValue(json[0][i]["ID"].int, forKey: "patientID") 
      newUser.setValue(json[0][i]["Name"].string, forKey: "patientName") 
      newUser.setValue(json[0][i]["Mileage"].double, forKey: "patientMileAge") 
      do{ 
       try context.save() 
      }catch{ 
       print("Could not save data") 
      } 
     } 
    } 

Это то, что мои данные будут выглядеть data

Здесь приходит неприятности, я только получить [ID: 4, Название: «hung», «Пробег»: «0,23»], в результате были заменены прежние 2 массива.

Почему я не могу сохранить их так, как я предполагал?

+1

Просто боковое примечание и, возможно, не очень актуально, так как Swift 3.0 займет некоторое время, но C-style for-loops будет обесцениваться d, поэтому, возможно, неплохо начать привыкать к использованию циклов for-in. – Eendje

ответ

1

Переместить эту строку кода в цикле:

let newUser = NSEntityDescription.insertNewObjectForEntityForName("Users", inManagedObjectContext: context) as NSManagedObject 

Это должно работать, напишите мне, если он не сделал

2
let newUser = NSEntityDescription.insertNewObjectForEntityForName("Users", inManagedObjectContext: context) as NSManagedObject 

должен быть внутри цикла, так как в противном случае вы создаете один объект, а затем повторно обновлять его и сохранить изменения (так старое значение переписывается)

1

, потому что вы не добавляете 3 записи, вам 'обновляет только значения для одного.

вам нужно переместить

let newUser = NSEntityDescription.insertNewObjectForEntityForName("Users", inManagedObjectContext: context) as NSManagedObject 

внутри вашей петли для

+0

спасибо! вы, ребята, здорово! –