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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将字符串保存到Core Data Swift相关的知识,希望对你有一定的参考价值。

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

@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

答案

好吧,首先我要给出明显的答案,即在你的核心数据数据模型中,你的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)

以上是关于如何将字符串保存到Core Data Swift的主要内容,如果未能解决你的问题,请参考以下文章

如何将日期类型保存到 Swift Core Data 中实体的属性?

如何在 Swift 中将可转换属性保存到 Core Data

如何将用户登录的 JSON 响应保存到 Core Data 中以跟踪 Swift 中的用户状态?

如何在 Documents 文件夹中保存 UIImagePicker 中的 UIImage 并获取路径字符串以保存在 Swift 中的 Core Data 中

Swift 3 Core Data - 如何同步保存上下文?

如何在 Swift 中的 Core Data 中保存多个项目