Базовые данные setValue, кажется, перезаписывают предыдущие значения - PullRequest
0 голосов
/ 11 марта 2020

Попытка выучить 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? Дайте мне знать, если вам нужно больше кода.

1 Ответ

1 голос
/ 11 марта 2020

Вы создаете только один экземпляр вашей сущности в setData, измените l oop на

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)
}
...