gpt4 book ai didi

ios - 仅保存最后一项,同时保存在核心数据 swift 中

转载 作者:行者123 更新时间:2023-11-30 13:08:49 24 4
gpt4 key购买 nike

通过这个函数我想在中添加属性实体,但它只重复保存最后一项。

我做错了什么?

 func SetFeaturedValues(Array : NSArray){
let appDelegate =
UIApplication.sharedApplication().delegate as! AppDelegate

let managedContext = appDelegate.managedObjectContext
let entity = NSEntityDescription.entityForName("FeaturedJob",
inManagedObjectContext:managedContext)
let FeaturedJob = NSManagedObject(entity: entity!,
insertIntoManagedObjectContext: managedContext)

print("array is \(Array)")
for i in Array{
if let rowData :NSDictionary = i as? NSDictionary{
FeaturedJob.setValue(rowData["company"], forKey: "company")
FeaturedJob.setValue(rowData["city"], forKey: "city")
FeaturedJob.setValue(rowData["id"], forKey: "id")
FeaturedJob.setValue(rowData["user_logo"], forKey: "user_logo")
FeaturedJob.setValue(rowData["title"], forKey: "title")



do {
try managedContext.save()
self.Featured.append(FeaturedJob)
print("featured job is \(FeaturedJob)")
// people.append(person)

} catch let error as NSError {
print("Could not save \(error), \(error.userInfo)")
}
}
}

}

最佳答案

好的,所以这仍然可以进行一些整理,但是......

问题在于您只创建了一个名为 FeaturedJobNSManagedObject 实例。每次迭代数组时,您都会附加其值并保存它。但它是同一个实例!这就是为什么只保存一个实例。

因此,在开始赋值之前,请将 let let FeaturedJob = ... 行放入 if block 内。这样你每次都会得到一个新的。

PS:您将在每次迭代时保存上下文。您可能只想在函数结束时执行一次。

关于ios - 仅保存最后一项,同时保存在核心数据 swift 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38977379/

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