如何将字符串保存到Core Data Swift

时间:2018-12-02 01:43:48

标签: ios swift core-data

我正在创建一个带有多个作为页面的视图控制器的注册表单,我需要从一个视图控制器(例如“名”和“姓氏”或“电子邮件地址”)到另一视图控制器的信息。我决定使用核心数据保存字符串并从另一个视图控制器中检索字符串,而不是为每个视图控制器创建一个全局结构(因为每次尝试实现它都会崩溃)。这是我的代码:

@IBAction func nextBtnWasPressed(_ sender: Any) {

        if firstNameText.text != "" && lastNameText.text != "" {
            //Core Data User Information
            var userInfo = UserInfo() // The Name of the Core Data Entity
            var firstName: String = firstNameText.text!
            userInfo.firstName = firstName

            do {
            try NSManagedObjectContext.save(firstName)//Need Fixing
        } catch {
            fatalError("Failure to save context: \(error)")
        }
        performSegue(withIdentifier: "toBirthdate", sender: self)
    } else {
        nextBtn.alpha = 0.5
    }
}

这是错误日志:'Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UserInfo setFirstName:]: unrecognized selector sent to instance 0x600001530e80' 完整的错误日志:View Here

1 个答案:

答案 0 :(得分:0)

好吧,起初我要给出一个显而易见的答案,那就是,在您的Core Data数据模型中,您的UserInfo实体没有firstName属性。

这仍然是可能的,但是随后我查看了您发布的完整记录,发现这个错误是另一个错误之前几百微秒:

Failed to call designated initializer on NSManagedObject class 'UserInfo'

我怀疑此错误表明您已使用init()初始化了托管对象。这是首次使用Core Data用户的常见错误。确保像这样初始化UserInfo对象:

let userInfo  = UserInfo.init(entity: entityDescription, insertInto: context);

或者如果您的部署目标是iOS 10或更高版本,则可以使用更新的清洁器方法:

let userInfo  = UserInfo.init(context: context)