【问题标题】:Core Data setValue seem to overWrite previous values核心数据 setValue 似乎覆盖了以前的值
【发布时间】:2020-06-23 14:19:16
【问题描述】:

试图学习core data 并卡在我设置数据的这个东西上,但是当我尝试获取它时,只返回最后一个元素。我感觉这是因为setValue 覆盖了之前的值。

func setData(data: People) {

    let enmployeeEntity = NSEntityDescription.entity(forEntityName: "EmployeesCoreData", in: context)
    let employee = NSManagedObject(entity: enmployeeEntity!, insertInto: context)

    for i in 0...data.people.count - 1 {
        employee.setValue(data.people[i].name, forKey: "name")
        print(data.people[i].name)
    }
}

print 给了我所有十个元素,所以至少我知道它们在那里。

然后当我尝试fetch 时,我得到的只是data.people[i].name 的最后一个元素。

func fetchMyData() {

    do {
        let request = NSFetchRequest<NSFetchRequestResult>(entityName: "EmployeesCoreData")
        let result = try context.fetch(request)

        print(result.count) //Returns 1
        for data in result as! [NSManagedObject] {
            let myDataName = data.value(forKey: "name") as! String
             print("????", myDataName)
        }
    } catch {
        let nserror = error as NSError
        print(nserror)
        }
}

知道为什么只显示最后一个element 吗?如果您需要查看更多代码,请告诉我。

【问题讨论】:

    标签: ios swift core-data nsfetchrequest


    【解决方案1】:

    您在 setData 中只创建了一个实体实例,将循环更改为

    for i in 0...data.people.count - 1 {
        let employee = NSManagedObject(entity: enmployeeEntity!, insertInto: context)
        employee.setValue(data.people[i].name, forKey: "name")
        print(data.people[i].name)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-12
      • 1970-01-01
      相关资源
      最近更新 更多