作为标题,我有一个包含多个对象的数组,我希望将它们存储在核心数据中(我知道我们不能将数组保存到核心数据中,因此我将代码分解为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")
}
}
}
麻烦来了,我只得到了[ID:4,姓名:&#39;悬挂&#39;,里程:&#39; 0.23&#39;]结果,前2个阵列已被替换
为什么我不能像我预期的那样保存它们?
答案 0 :(得分:2)
let newUser = NSEntityDescription.insertNewObjectForEntityForName("Users", inManagedObjectContext: context) as NSManagedObject
应该在循环内部,因为否则您创建一个对象然后重复更新它并保存更改(因此旧值被覆盖)
答案 1 :(得分:1)
因为您没有添加3个条目,所以您只需更新一个条目。
你需要搬家
let newUser = NSEntityDescription.insertNewObjectForEntityForName("Users", inManagedObjectContext: context) as NSManagedObject
在你的for循环中
答案 2 :(得分:1)
将这行代码移到你的循环中:
let newUser = NSEntityDescription.insertNewObjectForEntityForName("Users", inManagedObjectContext: context) as NSManagedObject
这应该有效,如果没有,请写信给我