只保存最后一项,同时快速保存核心数据[重复]
Posted
技术标签:
【中文标题】只保存最后一项,同时快速保存核心数据[重复]【英文标题】:only saving last item while saving in core data swift [duplicate] 【发布时间】:2016-08-16 14:18:26 【问题描述】:使用这个功能,我想在core-data 实体中添加属性,但它只会重复保存最后一项。
我做错了什么?
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)")
【问题讨论】:
你能分享一下你core_data.model
的快照吗
【参考方案1】:
好的,所以这仍然可以进行一些整理,但是...
问题在于您只创建了一个名为FeaturedJob
的NSManagedObject
实例。每次遍历数组时,都会附加它的值并保存它。但它是同一个例子!这就是为什么只有一个实例被保存的原因。
因此,在开始赋值之前,将带有 let let FeaturedJob = ...
的行放在 if 块中。这样你每次都会得到一个新的。
PS:每次迭代都会保存上下文。您可能只想在函数结束时执行一次。
【讨论】:
谢谢 :),我没有得到你的最后建议。 所以,最后一件事是 managedContext.save 调用在循环中,该循环正在迭代并将实体添加到上下文中。每个实体都被单独保存。储蓄是昂贵的,所以最后只做一次。不用担心,同时上下文会保留新实体,因此您可以一次保存它们。 它现在工作正常。但是当我重新启动应用程序时遇到另一个问题,我发现核心数据中没有数据。以上是关于只保存最后一项,同时快速保存核心数据[重复]的主要内容,如果未能解决你的问题,请参考以下文章