gpt4 book ai didi

swift - 将数据插入核心数据模型的速度慢得令人无法接受

转载 作者:行者123 更新时间:2023-11-28 10:05:06 25 4
gpt4 key购买 nike

我需要能够每周导入超过 100,000 条记录。数据以 CSV 文件的形式来自 Web 服务。下载速度很快,将其整理成可用形式也很快。然而,将记录添加到模型中是可行的,但速度慢得令人无法接受——将近一个小时!

我意识到我在每条记录后都在保存。必须有更好的方法来做到这一点。

请告诉我或指出另一个答案。这是我的工作代码。非常感谢。

func loadDataBase() {

for i in 1..<objectArray.count - 1 {

let item: [String] = objectArray[i]


s_stop_id = Int(item[0])
s_stop_code = Int(item[1])
s_stop_name = item[2]

let mainDelegate = UIApplication.shared.delegate as! AppDelegate
let context = mainDelegate.persistentContainer.viewContext

let newResource = NSEntityDescription.insertNewObject(forEntityName: stopEntity, into: context)

newResource.setValue(s_stop_id, forKey: "stop_id")
newResource.setValue(s_stop_name, forKey: "stop_name")
newResource.setValue(s_stop_code, forKey: "stop_code")


do {
try context.save()

} catch let error as NSError {
print("Error While Saving Data: \(error.userInfo)")
}
}

我正在显示一些使用信息。我似乎使用了 100% 的 CPU。在后台运行这个进程是否可行?那么时间就不是什么大问题了..

enter image description here

最佳答案

你可能应该实例化上下文并保存在 for 之外,它会是这样的:

func loadDataBase() {

let mainDelegate = UIApplication.shared.delegate as! AppDelegate
let context = mainDelegate.persistentContainer.viewContext

for i in 1..<objectArray.count - 1 {

let item: [String] = objectArray[i]


s_stop_id = Int(item[0])
s_stop_code = Int(item[1])
s_stop_name = item[2]



let newResource = NSEntityDescription.insertNewObject(forEntityName: stopEntity, into: context)

newResource.setValue(s_stop_id, forKey: "stop_id")
newResource.setValue(s_stop_name, forKey: "stop_name")
newResource.setValue(s_stop_code, forKey: "stop_code")
}
do {
try context.save()

} catch let error as NSError {
print("Error While Saving Data: \(error.userInfo)")
}
}

关于swift - 将数据插入核心数据模型的速度慢得令人无法接受,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55113504/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com