У меня есть следующая модель данных
@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»?