Сбой при записи в базу данных области - PullRequest
0 голосов
/ 25 августа 2018

У меня есть приложение todo, которое я использую для хранения данных.я написал коды базы данных для записи в базу данных и извлечения.

Когда я впервые вхожу в базу данных, все работает хорошо, то есть данные вводятся в базу данных, но когда я пытаюсь ввести другуюобъект в базе данных,

Завершение приложения из-за необработанного исключения 'RLMException', причина: 'Попытка изменить объект вне транзакции записи - сначала вызовите beginWriteTransaction для экземпляра RLMRealm.'

func createCategory(name: String, color: String, isCompleted: Bool) -> Void {
    category.name = name
    category.color = color
    category.isCompleted = false
    DBManager.instance.addData(object: category)
}

DBManager

func addData(object: CategoryModel)   {
    try! database.write {
        database.add(object, update: true)
        print("Added new object")
    }
}

Добавить категорию IBaction

CategoryFunctions.instance.createCategory(name: name, color: color, isCompleted: false)

Ответы [ 2 ]

0 голосов
/ 25 августа 2018

Создать новую категорию:

func createCategory(name: String, color: String, isCompleted: Bool) {
    let newCategory = Category(name: name, color: color, isCompleted: isCompleted)
    DBManager.instance.addData(object: newCategory)
}
0 голосов
/ 25 августа 2018

Это

.createCategory(name: name, color: color, isCompleted: false)

изменяет свойства уже добавленного объекта и пытается написать его снова, вам нужно создать новый объект, может быть, вам нужно что-то вроде

func createCategory(name: String, color: String, isCompleted: Bool) -> Void {
        let category = Category()
        category.name = name
        category.color = color
        category.isCompleted = isCompleted
        DBManager.instance.addData(object: category)

        // or
        let category = Category(name:name,color:color,isCompleted:isCompleted)
        DBManager.instance.addData(object: category)

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...