به نام خدا

بالاخره بعد از چندین بار تصمیم جدی برای یادگیری RxSwift امروز به کلی سراغش رفتم تا یه بار توی عمل یاد بگیرم و به شما هم باید عرض کنم که این راه یعنی پیاده کردن کد بهترین راهه چون توی همینجاست که وقتی یه چیزی رو تست میکنید متوجه میشید یه چیز دیگه ای هم نیازه و وقتی دارید آموزش رو میخونید میبینید که فکر اونجاشم کردن به این ترتیب خودتون سوال براتون پیش میاد و توی آموزش ها جوابشو پیدا میکنید 

خب ابتدا برای نصبش باید کد زیر رو توی Pod بریزید

 pod 'RxSwift',    '~> 4.0'
    pod 'RxCocoa',    '~> 4.0'

اگه کار با pod رو بلد نیستید توی همین سایت سرچ کنید شاید پیدا بشه

بعد از اینکه این دوتا لایبراری رو به پروژتون اضافه کردید میتونیم شروع کنیم

اول دقت کنید که توی هرکلاسی که قراره کدی از RxSwift بزنیم اول لایبراریشو توی اون کلاس import کنیم

اگه ازما بپرسن برنامه نویس واکنش گرا چیه و ازمون مثال خواستن به نظرم این مثال ساده و تا حدی مفهوم رو میرسونه

سه تا کار اصلی که من تا حالا فهمیدم:

۱. فرض کنید دوتا عدد صحیح a و b رو داریم که مقدار a برابر 2 و مقدار b برابر ۳ هست 

اگر متغییری به اسم c بسازیم و جمع این دوتا رو توش بزاریم مقدار c برابر ۵ هست اما فرض کنید چند خط کد پایین تر مقدار c رو تغییر میدیم و حالا چی؟

مقدار c همون مقدار قبلی است در حالی که ما میتونیم با Rx مقدار c رو در لحظه ای که a یا b تغییر میکنن تغییر بدیم (بدون اینکه ما کدی بزنیم یعنی خود rx اینکارو میکنه)

یه مثال خوب برای این حالت زمانی هست که شما میخواید یه رنگی که کل برنامتون ازش استفاده میکنه رو تغیر بدید و بدون خروج و ورود مجدد رنگ تمام برنامه در همون لحظه تغییر کنه اینکار با rxSwift ممکن هست

۲. اینه که RxSwift به وسیله RxCocoa میتونن برای یه TextField یه subscribe تعریف کنن این یعنی به محض تغییر کردن متنی که توی TextField شما هست کدی که شما میخواید اجرا میشه و تازه میتونید نتیجه اش رو توی یه label همون لحظه نشون بدید (فرض کنید که میخواید یک username رو که کاربر وارد میکنه در همون لحظه بگید که این قبلا ثبت شده یا قابل ثبت هست)

۳. و یه کار مهم دیگه RxSwift انجام میده و شایدم از همه مهمتره این هست که شما میتونید باهاش Observable ایجاد کنید یعنی چی؟ فرض کنید میخواید یه دیتایی رو از سرور بگیرید و توی این مدت کاربر. رو معطل نکنید و حتی اگه کاربر دلش گرفت بتونه برگرده صفحه قبل. اگر شما بخواید چنین کاری رو معمولی و بدون RxSwift انجام بدید یه خورده زمان بر هست ولی کاری که RxSwift برای شما انجام میده اینه که به شما اجازه میده کدهای اتصال به سرور رو یه جایی قرار بدید که وقتی کاربر به صفحه قبلی برگشت درخواستی که به سرور رفته یا داره میره کنسل بشه و جوابش نادیده گرفته بشه

یا کلا هرمحاسباتی که وقت گیر هستن و قرار نیست همون لحظه تابعی که صدا میکنیم جوابشو بده با RxSwift میفرستیمش توی Thread دیگه و جوابش که اومد میتونیم برگردیم روی همون ui و نتیجه اش رو نشون بدیم

فعلا تا همینجا کافیه کد ها و توضیحات مفصل رو توی قسمت های بعدی ببینید