Как сохранить строку в Core Data Swift - PullRequest
0 голосов
/ 02 декабря 2018

Я создаю форму регистрации с несколькими контроллерами представления в виде «страниц», и мне нужна информация от одного контроллера представления, например «Имя» и «Фамилия» или «адрес электронной почты», к другому контроллеру представления.Я решил, что собираюсь использовать данные ядра для сохранения строк и извлечения их из другого контроллера представления, а не создавать глобальную структуру для каждого контроллера представления (потому что она вылетает каждый раз, когда я пытаюсь это реализовать).Вот мой код:

@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' Полный журнал ошибок: Просмотреть здесь

1 Ответ

0 голосов
/ 02 декабря 2018

Ну, сначала я собирался дать очевидный ответ, который заключается в том, что в вашей модели данных 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...