Очистка: поле даты в области при обновлении объекта - PullRequest
0 голосов
/ 07 января 2019

У меня есть следующая модель данных

@objc dynamic var uid = UUID().uuidString;
@objc dynamic var completed: Bool = false;
@objc dynamic var dateCompleted: Date?;

Когда я создаю новый объект, он имеет nil для dateCompleted, затем, когда пользователь завершает задачу, я пытаюсь обновить объект с помощью primaryKey (uid) примерно так

let query = realm.objects(Tasks.self).filter("uid = %@", id).first!;
if query.completed == false {
    var date = Date();
} else {
    var date: Date = nil
}

let wayUpdate = ["uid": id, "completed": !query.completed, "dateCompleted": date] as [String : Any]

do {
    try realm.write {
        realm.create(WaysData.self, value: wayUpdate, update: true)
    }
} catch {
    print("Error adding update to experience! \(error)");
}

Я получаю следующую ошибку Cannot convert value of type 'String' to specified type 'Date' в else block.

Мой вопрос - есть ли способ очистить дату при обновлении завершения до значения false, или я должен просто оставить dateCompleted как Date() каждый раз, когда пользователь завершает / не завершает / завершает задачу и просто делает проверку на значение completed: Bool всякий раз, когда я хочу обновить метку кнопки завершения на «Complete» или «Revive»?

1 Ответ

0 голосов
/ 07 января 2019

Если вы просто хотите обновить одно свойство вашего экземпляра подкласса Object, не вызывайте create, просто измените это единственное свойство в транзакции записи.

do {
    try realm.write {
        query.dateCompleted = query.completed ? nil : Date()
    }
} catch {
    print("Error adding update to experience! \(error)")
}

Вы также должны использовать первичный ключ для извлечения объекта, не фильтруйте запрос.

let query = realm.object(ofType: Tasks.self,forPrimaryKey: id)

Не имеет отношения к вашей проблеме, но вы не должны использовать ; в конце своих строк в Swift, это не Objective-C.

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