kبه نام خدا

توی قسمت اول فهمیدیم که RxSwift به چه کاری میاد شاید شما با مطالعه همون قسمت رفتید و توی اینترنت سرچ کردید که سریع تر یاد بگیرید اما با یه عالمه کد مواجه شدید

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

۱.متغییر

فرض کنید که بخوایم متغییری رو داشته باشیم که اونو subscribe کنیم

subscribe کردن یعنی منتظر بمونیم که تغییر کنه و مقدار جدیدی بگیره

خب وقتی میخوایم یه متغییر عددی تعریف کنیم این شکلی میشه

let a = BehaviorRelay(value: 2)

خب حالا وقتی بخوایم ازش استفاده کنیم یعنی بخوایم فال گوش وایسیم این شکلیه

a.subscribe { newVal in
            print(newVal.element)
        }

/// OR

a.subscribe (onNext: { newVal in
            print(newVal)
        })

خب شما برای یه متغییر میتونید هرچی دلتون بخواد subscribبزارید یعنی چندین تا فال گوش بزارید که تا تغییر کرد هرجا که شما گفته باشید یه کاری انجام بشه

اما این فال گوش بازیا کی قراره تموم شه اینجوری پیش بره که رم و حافظه و کلا منابع گوشی داغون میشه اینو بعدا جوابشو میگم

میتونید این مقداری که داره تغییر میکنه رو بزارید توی یه Label که قشنگ بشه به اصطلاح میگم bind کنید یعنی بچسبونید یعنی به محض تغییر اون متغییر مقدار اون label هم تغییر کنه اینکار رو میتونید بعد از subscribe انجام بدید یا اینکه فقط همون متغییر a رو مستقیم bind کنید (خوبی اون قبلی اینه که میتونید یه کدی رو هم بنویسید مثلا print کنید) باهم کدشو ببینیم

a.bind(to: label.rx.text)

کد بالا یه ارور عجیبی داره که یه چیزایی در مورد Self مینویسه و خیلی هم بی ربطه هرموقع به چنین اروری خوردید بدونید یه جایی از کدهای RxSwiftتون داره میلنگه

خب فکر کنم فهمیده باشید که a مقدارش یه عدد صحیح هست نه String پس ارورش هم برای همینه

حالا با یه تابعی به نام map آشنا میشیم که مقدار هایی که میاد مستقیم میره توش و جایگذاری میشه باهم ببینیم

  a.map{String(describing: $0)}.bind(to: label.rx.text)

خب کار تابع map همینه که مقدار جدیدی رو که میاد به نام $0 میده توی کد ما و ماهم همونجوری که میبینید به String تبدیل میکنیم و چیزی که به bind میرسه String هست نه Int

فکر کنم برای قسمت دوم بس باشه

فعلا تا قسمت بعدی از سری آموزش های RxSwift

یاعلی