Coredata:约束错误
Coredata: error in constraints
我有这个简单的代码可以在 coredata 中保存一个对象。
在我的 xcatamodel 中,我将约束设置为 "firstName":
Picture。
删除 "Student" 实体中的所有条目后,代码运行正常。
但只有一次。
当我第二次保存同一组时,我得到 "fatal error".
func saveStudent() {
let student: Student = NSEntityDescription.insertNewObject(forEntityName: "Student", into: DatabaseController.getContext()) as! Student
student.firstName = "henry"
student.lastName = "miller"
student.age = 22
DatabaseController.saveContext()
let fetchRequest: NSFetchRequest<Student> = Student.fetchRequest()
do {
let searchResults = try DatabaseController.getContext().fetch(fetchRequest)
print("number of results: \(searchResults.count)")
for result in searchResults as [Student] {
print("\(result.firstName) \(result.lastName) \(result.age)")
}
} catch {
print ("error: \(error)")
}
}
据我所知,约束是为了识别潜在的重复项。
有人知道如何解决这个问题吗?
这是错误:Picture
如有任何帮助,请提前致谢。
找到解决方案:
func saveStudent() {
let student: Student = NSEntityDescription.insertNewObject(forEntityName: "Student", into: DatabaseController.getContext()) as! Student
student.firstName = "henry"
student.lastName = "miller"
student.age = 22
DatabaseController.getContext().mergePolicy = NSMergeByPropertyObjectTrumpMergePolicy
DatabaseController.saveContext()
let fetchRequest: NSFetchRequest<Student> = Student.fetchRequest()
do {
let searchResults = try DatabaseController.getContext().fetch(fetchRequest)
print("number of results: \(searchResults.count)")
for result in searchResults as [Student] {
print("\(result.firstName) \(result.lastName) \(result.age)")
}
} catch {
print ("error: \(error)")
}
}
我有这个简单的代码可以在 coredata 中保存一个对象。 在我的 xcatamodel 中,我将约束设置为 "firstName": Picture。 删除 "Student" 实体中的所有条目后,代码运行正常。 但只有一次。 当我第二次保存同一组时,我得到 "fatal error".
func saveStudent() {
let student: Student = NSEntityDescription.insertNewObject(forEntityName: "Student", into: DatabaseController.getContext()) as! Student
student.firstName = "henry"
student.lastName = "miller"
student.age = 22
DatabaseController.saveContext()
let fetchRequest: NSFetchRequest<Student> = Student.fetchRequest()
do {
let searchResults = try DatabaseController.getContext().fetch(fetchRequest)
print("number of results: \(searchResults.count)")
for result in searchResults as [Student] {
print("\(result.firstName) \(result.lastName) \(result.age)")
}
} catch {
print ("error: \(error)")
}
}
据我所知,约束是为了识别潜在的重复项。 有人知道如何解决这个问题吗? 这是错误:Picture 如有任何帮助,请提前致谢。
找到解决方案:
func saveStudent() {
let student: Student = NSEntityDescription.insertNewObject(forEntityName: "Student", into: DatabaseController.getContext()) as! Student
student.firstName = "henry"
student.lastName = "miller"
student.age = 22
DatabaseController.getContext().mergePolicy = NSMergeByPropertyObjectTrumpMergePolicy
DatabaseController.saveContext()
let fetchRequest: NSFetchRequest<Student> = Student.fetchRequest()
do {
let searchResults = try DatabaseController.getContext().fetch(fetchRequest)
print("number of results: \(searchResults.count)")
for result in searchResults as [Student] {
print("\(result.firstName) \(result.lastName) \(result.age)")
}
} catch {
print ("error: \(error)")
}
}