具有子实体的CoreData Exc_bad_access代码= 1

时间:2016-01-13 09:44:44

标签: ios swift core-data exc-bad-access

我需要你的帮助,我在这一行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?

}

我做错了什么?

谢谢;)

编辑: BaseStoredObjectNSManagedObject

的子类

0 个答案:

没有答案