Я вставляю данные в мой стек CoreData (который имеет только одну сущность с несколькими атрибутами). В XCode я установил атрибут " PatientID " как уникальное ограничение.
При попытке добавить новую запись, это делает как ожидалось и выдает ошибку в консоли XCode (NSConstraintConflict
). Однако в приложении ничего не отображается.
Как бы я добавил добавленный UIAlertController, чтобы указать, что это повторяющаяся запись?
Моя текущая функция для сохранения в CoreData выглядит следующим образом:
func save(newID: String, newDOB: String, newAge: String, newGender: String, newHeight: String, newWeight: String, newRace: String, newADLS: String) {
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
return
}
// 1
let managedContext = appDelegate.persistentContainer.viewContext
// 2
let entity = NSEntityDescription.entity(forEntityName: "Patient", in: managedContext)!
let person = NSManagedObject(entity: entity, insertInto: managedContext)
// 3
person.setValue(newID, forKeyPath: "patientID")
person.setValue(newDOB, forKey: "dob")
person.setValue(newAge, forKey: "age")
person.setValue(newGender, forKey: "gender")
person.setValue(newHeight, forKey: "height")
person.setValue(newWeight, forKey: "weight")
person.setValue(newRace, forKey: "race")
person.setValue(newADLS, forKey: "adls")
// 4
do {
try managedContext.save()
dismiss(animated: true, completion: nil)
//No need for this - this occurs appends during viewWillAppear
//ids.append(person)
} catch let error as NSError {
print("Could not save. \(error), \(error.userInfo)")
}
}