在 RxSwift 中修改 behaviorRelay 数组内的属性
Posted
技术标签:
【中文标题】在 RxSwift 中修改 behaviorRelay 数组内的属性【英文标题】:Modify property inside of a behaviourRelay array in RxSwift 【发布时间】:2019-10-09 00:10:12 【问题描述】:我有一个使用 RxSwift 定义的数组
public var calendarNDays = BehaviorRelay<[CalendarControlDayModel]>(value: [])
CalendarControlDayModel 结构如下。
struct CalendarControlDayModel
var date: String = ""
var day: Int = 0
var name: String = ""
一旦 calendarNDays
在某个时间点用元素更新,我想修改数组中第 i 个元素的 name 属性。
喜欢self.calendarNDays.value[i].name = "Nancy"
。但是,我收到编译错误“无法分配给属性:'value' 是 get-only 属性”。
在行为中继数组中修改元素的特定属性的方法是什么?
【问题讨论】:
【参考方案1】:正如编译器所建议的那样,BehaviorRelay
中的 value
是一个只读属性。
因此,为了对数组进行更改,您首先需要复制它并使用accept
方法来反映更改。
类似于
var update = calendarNDays.value
update[i].name = “Nancy”
calendarNDays.accept(update)
【讨论】:
以上是关于在 RxSwift 中修改 behaviorRelay 数组内的属性的主要内容,如果未能解决你的问题,请参考以下文章
RxSwift + UITableViewCell 如何在 heightForRowAt 中获取单元格对象
在 RxSwift 4.0.0 中正确使用 retryWhen 运算符