Изменить свойство внутри массива поведенческого реле в RxSwift - PullRequest
0 голосов
/ 09 октября 2019

У меня есть массив, определенный с помощью RxSwift как

public var calendarNDays = BehaviorRelay<[CalendarControlDayModel]>(value: [])

CalendarControlDayModel - это структура, как показано ниже.

struct CalendarControlDayModel {
        var date: String = ""
        var day: Int = 0
        var name: String = "" 
}

Как только calendarNDays обновляется с элементами в некоторый момент времениЯ хочу изменить свойство name i-го элемента в массиве.

Как self.calendarNDays.value[i].name = "Nancy". Однако я получаю ошибку компиляции «Невозможно назначить свойству:« значение »является свойством только для получения».

Каким образом можно изменить определенное свойство элемента в массиве реле поведения?

1 Ответ

0 голосов
/ 09 октября 2019

Как указывает компилятор, value in BehaviorRelay - свойство только для чтения.

Поэтому, чтобы внести изменения в массив, сначала необходимо скопировать его и использовать метод accept для отражения изменений.

Аналогично

var update = calendarNDays.value
update[i].name = “Nancy”
calendarNDays.accept(update)
...