[英]saving json data in coredata in swift
I am trying to save json data which is present in my app bundle.我正在尝试保存我的应用程序包中存在的 json 数据。 But instead of saving all data it is saving only one data
但不是保存所有数据,而是只保存一个数据
func getDignosysListFromJson() {
let coreData = CoreDataStack()
let managedObjectContext = coreData.persistentContainer.viewContext
let dignose = Dignose(context: managedObjectContext)
let jsonPath = Bundle.main.path(forResource: "dignosys", ofType: "json")
let jsonUrl = URL(fileURLWithPath: jsonPath!)
do {
let data = try Data(contentsOf: jsonUrl)
let jsonResult = try JSONSerialization.jsonObject(with: data, options: .mutableContainers)
if let newResult = jsonResult as? Array<Dictionary<String, Any>>{
for i in newResult{
let newName = i["dx description"] as! String
print(newName)
dignose.name = newName
dignose.date = "29 Dec 2020"
}
coreData.saveContext()
}
} catch {
print("")
}
}
My json structure is:-我的 json 结构是:-
[
{"dx type":"what is foot issue","dx description":"Hereditary motor and sensory neuropathy"},
{"dx type":"what is foot issue","dx description":"Multiple sclerosis"},
{"dx type":"use as secondary when only have issue one side","dx description":"gait instability”}
]
Move the line移动线
let dignose = Dignose(context: managedObjectContext)
into the loop进入循环
for i in newResult {
let dignose = Dignose(context: managedObjectContext)
let newName = i["dx description"] as! String
print(newName)
dignose.name = newName
dignose.date = "29 Dec 2020"
}
to get a new instance in each iteration.在每次迭代中获取一个新实例。
The code contains a few questionable practices.该代码包含一些有问题的做法。 I recommend this
我推荐这个
func getDignosysListFromJson() {
let coreData = CoreDataStack()
let managedObjectContext = coreData.persistentContainer.viewContext
let jsonUrl = Bundle.main.url(forResource: "dignosys", withExtension: "json")!
do {
let data = try Data(contentsOf: jsonUrl)
if let jsonResult = try JSONSerialization.jsonObject(with: data) as? [[String:Any]] {
for anItem in jsonResult {
let dignose = Dignose(context: managedObjectContext)
let newName = anItem["dx description"] as! String
print(newName)
dignose.name = newName
dignose.date = "29 Dec 2020"
}
coreData.saveContext()
}
} catch {
print(error)
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.