Ios 如何使接收对象对阵列中添加的新元素作出反应?
我希望我的Ios 如何使接收对象对阵列中添加的新元素作出反应?,ios,swift,observable,rx-swift,Ios,Swift,Observable,Rx Swift,我希望我的subject能够观察myArray上的更改,因此每当myArray添加新元素时,subscription就会触发 var subject = PublishSubject<[String]>() var myArray = ["One", "Two"] subject.flatMap{Observable.from($0)}.subscribe(onNext: { print($0) }).disposed(by: disposeBag) subject.on
subject
能够观察myArray
上的更改,因此每当myArray
添加新元素时,subscription
就会触发
var subject = PublishSubject<[String]>()
var myArray = ["One", "Two"]
subject.flatMap{Observable.from($0)}.subscribe(onNext: {
print($0)
}).disposed(by: disposeBag)
subject.onNext(myArray)
myArray.append("Three")
subject.onNext(myArray)
var subject=PublishSubject()
var myArray=[“一”、“二”]
subject.flatMap{Observable.from($0)}.subscribe(onNext:{
印刷品(0美元)
}).处置(由:处置人)
subject.onNext(myArray)
myArray.append(“三”)
subject.onNext(myArray)
它的工作原理是每次更改时将myArray
添加到onNext
,但是当myArray
获得一个新的元素
而不使用onNext
时,订阅
是否有办法自动触发?也许通过将myArray
变成一个可观察的?这是一个利用属性包装器的好时机。但是,请注意不要在结构中使用此选项
@propertyWrapper
class RxPublished<Element> {
private let subject: BehaviorSubject<Element>
init(wrapped: Element) {
subject = BehaviorSubject(value: wrapped)
}
deinit {
subject.onCompleted()
}
var wrappedValue: Element {
get { try! subject.value() }
set { subject.onNext(newValue) }
}
var projectedValue: Observable<Element> {
subject.asObservable()
}
}
class MyClass {
@RxPublished(wrapped: ["One", "Two"]) var myArray: [String]
}
func example() {
let foo = MyClass()
_ = foo.$myArray
.debug("foo.myArray")
.subscribe()
foo.myArray.append("Three")
}
@propertyWrapper
类RxPublished{
私人租赁主体:行为主体
init(包装:元素){
subject=BehaviorSubject(值:wrapped)
}
脱硝{
subject.onCompleted()
}
var wrappedValue:元素{
获取{try!subject.value()}
set{subject.onNext(newValue)}
}
var projectedValue:可观察{
subject.asObservable()
}
}
类MyClass{
@RxPublished(包装:[“一”,“两”])var myArray:[字符串]
}
func示例(){
设foo=MyClass()
_=foo.$myArray
.debug(“foo.myArray”)
.subscribe()
foo.myArray.append(“三”)
}
这是利用属性包装器的好时机。但是,请注意不要在结构中使用此选项
@propertyWrapper
class RxPublished<Element> {
private let subject: BehaviorSubject<Element>
init(wrapped: Element) {
subject = BehaviorSubject(value: wrapped)
}
deinit {
subject.onCompleted()
}
var wrappedValue: Element {
get { try! subject.value() }
set { subject.onNext(newValue) }
}
var projectedValue: Observable<Element> {
subject.asObservable()
}
}
class MyClass {
@RxPublished(wrapped: ["One", "Two"]) var myArray: [String]
}
func example() {
let foo = MyClass()
_ = foo.$myArray
.debug("foo.myArray")
.subscribe()
foo.myArray.append("Three")
}
@propertyWrapper
类RxPublished{
私人租赁主体:行为主体
init(包装:元素){
subject=BehaviorSubject(值:wrapped)
}
脱硝{
subject.onCompleted()
}
var wrappedValue:元素{
获取{try!subject.value()}
set{subject.onNext(newValue)}
}
var projectedValue:可观察{
subject.asObservable()
}
}
类MyClass{
@RxPublished(包装:[“一”,“两”])var myArray:[字符串]
}
func示例(){
设foo=MyClass()
_=foo.$myArray
.debug(“foo.myArray”)
.subscribe()
foo.myArray.append(“三”)
}
制作一个符合可观察的
的包装器结构,它包装您的数组并提供一个append
方法,该方法附加到包装的数组,但也会触发一个onNext
事件。最有可能的是,有人已经实现了这样一个东西,所以我会首先搜索它。制作一个符合observable
的包装器结构,它包装您的数组并提供一个append
方法,该方法附加到包装的数组,但也会触发onNext
事件。最有可能的是,有人已经实现了这样一个东西,所以我会首先搜索它。