我有两个核心数据实体,Car
和Services
。我希望汽车具有多种服务,因此我将汽车与Services
的类型设为to-many
。
如果查看数据库,我有一个带有属性的Car
表和一个带有属性的Services
表,都保存到了各自的表中。
问题是我无法弄清楚要附加到汽车上的服务。查看Services
表时,有一列用于“汽车”。我知道Car+CoreDataProperties.swift
文件中有一些方法,例如addToServices(_ value: Service)
和addToServices(_ value: NSSet)
,但是当我尝试调用这些方法之一并传递服务数据时,出现此错误:< / p>
CoreData: error: +[Services entity] Failed to find a unique match for an NSEntityDescription to a managed object subclass
以下是调用该错误的代码:
func saveToCoreData() {
let car = Car(context: self.moc)
let service = Services(context: self.moc)
service.date = date
service.serviceType = self.serviceType
service.serviceCost = self.serviceCost
service.serviceComplete = self.servicecComplete
let serviceData: NSSet = [service.date, service.serviceType, service.serviceCost, service.serviceComplete]
car.addToServices(serviceData)
try? self.moc.save()
}
为了使所有这些事情变得更加困难,正在通过我使用SwiftUI创建的表单输入数据。
答案 0 :(得分:1)
self.moc.save()
。如果失败,则数据库中没有可见的更改。 addToServices(_ value: Service)
和addToServices(_ value: NSSet)
是重载方法。第一个向Service
对象添加一个(单个)Car
对象,第二个向Service
对象添加一组Car
对象。 要设置汽车服务,您可以使用其他方法:
car.addToServices(service)
car.addToServices([service])
car.services = [service]
。关于错误:car.addToServices(serviceData)
失败,因为serviceData
既不是Set<Service>
也不是Service
类型。