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
یاعلی