CoreData 中的 Swift 数组

Posted

技术标签:

【中文标题】CoreData 中的 Swift 数组【英文标题】:Swift Array in CoreData 【发布时间】:2016-12-18 11:37:34 【问题描述】:

我想将一个包含 28 个条目的数组存储到我的 coreData。有没有办法做到这一点? 我用这段代码试过了,但看起来这段代码只是重写了值。

let appDelegate =
        UIApplication.shared.delegate as! AppDelegate

    let managedContext = appDelegate.persistentContainer.viewContext

    let entity =  NSEntityDescription.entity(forEntityName: "PillTook",
                                             in:managedContext)

    let value = NSManagedObject(entity: entity!,
                                insertInto: managedContext)

    for var index in 0...27 

        value.setValue(false, forKey: "took")

        do 
            try managedContext.save()

            pillTook.append(value)

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

【问题讨论】:

【参考方案1】:

是的,您的代码仅创建一个NSManagedObject,并在for 循环中更新其took 属性的值。将 let value = ... 行移动到 for 循环中,为每次迭代创建一个新的 NSManagedObject。我还建议在 for 循环之后只保存一次上下文,而不是在每次迭代时保存:

let appDelegate = UIApplication.shared.delegate as! AppDelegate

let managedContext = appDelegate.persistentContainer.viewContext

let entity =  NSEntityDescription.entity(forEntityName: "PillTook", in:managedContext)

for var index in 0...27 

    let value = NSManagedObject(entity: entity!, insertInto: managedContext)
    value.setValue(false, forKey: "took")
    pillTook.append(value)

do 
    try managedContext.save()
 catch let error as NSError  
    print("Could not save \(error), \(error.userInfo)")

【讨论】:

以上是关于CoreData 中的 Swift 数组的主要内容,如果未能解决你的问题,请参考以下文章

使用 Core Data 在 Swift 中通过 UIProgressView 异步插入数据

如何在 Swift 中将字符串数组保存到 Core Data

CoreData学习:Core Data Stack(Swift)

CoreData 中的 Swift 数组

Swift & Core Data 解包 fetchedresults

如何在 Swift 中的 Core Data 中保存多个项目