Мои основные данные Сохранять, извлекать и удалять все работают, но мое обновление не работает вообще. Вот мой код:Обновление данных ядра не работает
init() {
appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
managedContext = appDelegate.managedObjectContext
}
/**
* Updates team in Core Data
*
* - parameter team: the Team to update
*/
func updateTeam(team: Team) {
let request = NSFetchRequest(entityName: "Team")
request.predicate = NSPredicate(format: "city = %@", team.getCity())
do {
if let fetchResults = try self.managedContext.executeFetchRequest(request) as? [NSManagedObject] {
if fetchResults.count != 0 {
let managedObject = fetchResults[0]
managedObject.setValue(team.getCity(), forKey: "city")
managedObject.setValue(team.getMascot(), forKey: "mascot")
managedObject.setValue(team.getOwner(), forKey: "owner")
managedObject.setValue(team.getManager(), forKey: "manager")
managedObject.setValue(team.getSeasonWins(), forKey: "seasonWins")
managedObject.setValue(team.getSeasonLosses(), forKey: "seasonLosses")
managedObject.setValue(team.getCareerWins(), forKey: "careerWins")
managedObject.setValue(team.getCareerLosses(), forKey: "careerLosses")
try self.managedContext.save()
}
}
} catch {
print("Error updating user team")
}
}
я могу сохранить исходные данные команды, получить данные команды, и удалять данные команды, но когда я пытаюсь обновить команду (код выше), не отражен в следующем поиск.
активизировали Вы через этот код в отладчике? Почему вы выбираете команду, когда вы передаете команду в первую очередь? Почему у вас есть все эти функции getCity() вместо прямого доступа к свойствам команды? – jrturton
Ну, для обновления у вас уже была полученная команда. Итак, если вы хотите обновить, вы должны передать измененную команду обратно, захватить старую команду в базе данных (предоставив предикат «city = team.getCity()», так как город никогда не меняется), а затем обновление управляемого объекта с новыми данными Команды. Правильно ли это звучит? –
@LoganJahnke Не нужно возвращать. Предполагая, что «город» уникален, «managedObject» и «team» являются самим тем же объектом (CoreData обеспечивает уникальность - один объект из хранилища будет иметь только один экземпляр в файле managedObjectContext). Следовательно, вы получаете значения атрибутов и присваиваете их тем же атрибутам одного и того же объекта. – pbasdf