我需要你的帮助,我在这一行EXC_BAD_ACCESS
上仍然有一个漂亮的self.clinic!.copyWithDTO(clinicDTO)
错误。
控制台:po self.clinic
Optional(<NSManagedObject: 0x7a7bd240> (entity: Clinic; id: 0x7a7bbe10 <x-coredata://7B916AD3-1989-426F-932F-0A62C755F2B4/Clinic/p1> ; data: <fault>))
我正在尝试通过提供DTO来填充CoreData模型中的子实体的属性。
@objc(UserProfile)
class UserProfile: BaseStoredObject {
override class func entityName() -> String {
return "UserProfile"
}
override func copyWithDTO(dto: BaseDTO) {
if let userProfileDTO = dto as? UserProfileDTO {
self.id = userProfileDTO.id
self.login = userProfileDTO.login
self.password = userProfileDTO.password
self.lastname = userProfileDTO.lastname
self.email = userProfileDTO.email
self.createdOn = userProfileDTO.createdOn
self.gender = userProfileDTO.gender
self.userProfileType = userProfileDTO.userProfileType
self.firstname = userProfileDTO.firstname
self.fullname = userProfileDTO.fullname
if let clinicDTO = userProfileDTO.clinic {
if let unwrappedClinic = self.clinic {
unwrappedClinic.copyWithDTO(clinicDTO)
} else {
self.clinic = Clinic(entity: NSEntityDescription.entityForName("Clinic", inManagedObjectContext: self.managedObjectContext!)!, insertIntoManagedObjectContext: self.managedObjectContext)
self.clinic!.copyWithDTO(clinicDTO) // !! EXC_BAD_ACCESS (code=1, address=0x....)
}
}
} else {
fatalError("copyWithDTO: must be sent with UserProfileDTO")
}
}
}
@objc(Clinic)
class Clinic: BaseStoredObject {
override class func entityName() -> String {
return "Clinic"
}
override func copyWithDTO(dto: BaseDTO) {
if let clinicDTO = dto as? ClinicDTO {
self.id = clinicDTO.id
self.name = clinicDTO.name
self.phoneNumber = clinicDTO.phoneNumber
self.phoneNumber24hours = clinicDTO.phoneNumber24hours
self.nurseContactPhoneNumber = clinicDTO.nurseContactPhoneNumber
self.emergencyPhoneNumber = clinicDTO.emergencyPhoneNumber
self.internalClinicId = clinicDTO.internalClinicId
self.webserviceURL = ""
} else {
fatalError("copyWithDTO: must be sent with ClinicDTO")
}
}
}
extension UserProfile {
@NSManaged var id: String?
@NSManaged var login: String?
@NSManaged var password: String?
@NSManaged var lastname: String?
@NSManaged var firstname: String?
@NSManaged var email: String?
@NSManaged var createdOn: NSDate?
@NSManaged var userProfileType: NSNumber?
@NSManaged var gender: NSNumber?
@NSManaged var fullname: String?
@NSManaged var clinic: Clinic?
}
我做错了什么?
谢谢;)
编辑: BaseStoredObject
是NSManagedObject