Ios 将阵列保存为核心数据中的数据的正确方法是什么?

Ios 将阵列保存为核心数据中的数据的正确方法是什么?,ios,arrays,swift,core-data,Ios,Arrays,Swift,Core Data,作为标题,我有一个由多个对象组成的数组,我希望将它们存储在核心数据中(我知道我们无法将数组保存到核心数据中,所以我将我的代码分解为json[0][I][“ID”].int格式),也许您在阅读我的代码后会更清楚 let appDel:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate let context:NSManagedObjectContext = appDel.managedObject

作为标题,我有一个由多个对象组成的数组,我希望将它们存储在核心数据中(我知道我们无法将数组保存到核心数据中,所以我将我的代码分解为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")
            }
        }
    }
让appDel:AppDelegate=UIApplication.sharedApplication().delegate为!AppDelegate
let context:NSManagedObjectContext=appDel.managedObjectContext
让newUser=NSEntityDescription.insertNewObjectForEntityForName(“Users”,inManagedObjectContext:context)作为NSManagedObject
socket.on(“reply”){data,ack in
让json=json(数据)
打印(“数据库已回复”)
打印(json[0]。计数)
对于var i=0;i
应该在循环内,因为否则您将创建一个对象,然后重复更新它并保存更改(因此旧值将被覆盖)


应该在循环中,因为否则您将创建一个对象,然后重复更新它并保存更改(因此旧值将被覆盖)

因为您没有添加3个条目,所以您只更新了一个条目的值

你得走了

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

在for循环内部

因为没有添加3个条目,所以只更新一个条目的值

你得走了

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

在for循环中

将这行代码移动到循环中:

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

这应该行得通,如果它没有将这行代码移动到循环中,请写信给我:

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

这应该行得通,如果它不只是一个旁注,可能并不真正相关,因为Swift 3.0需要一段时间,但是C-style for循环将被弃用,所以也许开始习惯使用
for in
循环是个好主意。只是旁注,可能并不真正相关,因为Swift 3.0需要一段时间,但是C-stylefor循环将被弃用,因此开始习惯在
循环中使用
for可能是个好主意。