به نام خدا

توی قسمت قبل یاد گرفتیم چجوری یه متغیر بسازیم و اونو Subscribe کنیم یه خورده هم به این بحث که چجوری اون متغییر رو به یه ویو bind کنیم پرداختیم

این قسمت چیز زیادی نمیگم فقط مثالی که جلسه اول خدمتتون زدم برای c=a+b رو میخوام کدشو خدمتتون بدم

که اینجوری میشه

 

        let a = BehaviorRelay(value: 3)
        let b = BehaviorRelay(value: 2)
        let c = Observable.combineLatest(a,b)
            .map {a , b  in
                a+b
            }.subscribe (onNext: {
                print($0)
            })

خب چیزی که توی جلسه قبلی باید میگفتم اما یادم رفت این بود که شما لازمه گاهی مقدار اولیه اون a رو تغییر بدید یا بخواید b رو عوض کنید مثلا a رو برابر ۱۲ قرار بدید برای اینکار باید از تابع accept استفاده کنید

a.accept(12)

متاسفانه نوع BehaviorRelay فقط میشه یه مقدار جدیدی رو بهش داد یعنی شما اگه یه لیستی درونش داشته باشید نمیتونید یه آیتمی رو بهش append کنید و مجبورید یه لیست جدید بسازید که شامل اون ایتم جدید و ایتم های لیست گذشته باشه

برای گرفتن مقدار فعلی یه BehaviorRelay از کد زیر که مقدار value <فقط خواندنی> است استفاده میکنیم

a.value

برای اون لیستی هم که گفتم فرض کنید متغییر collections رو ساخته اید و حالا برای اضافه کردن یه مقدار به ته لیست باید از کد زیر استفاده کنید

var mutableCopy = relay.value
mutableCopy.mutateSomehow()
relay.accept(mutableCopy)

میشه یه توضیحات اضافه داد.و گفت که کد بالا استاندارد نیست چون ممکنه لحظه ای که شما دارید یه کاری رو انجام میدید با مقدار قبلی یه مقداری همون آن اضافه بشه که وقتی بعد دارید accept میکنید اون مقدار جدید از بین میره ولی کار به این کارا زیاد نداریم فعلا

خب برای این جلسه کافیه

فعلا تا جلسه بعدی

یاعلی