دو سه ماه پیش بود که اپل توی WWDC 2019 تکنولوژی جدیدی به اسم SwiftUI معرفی کرد که قراره با این دیگه کلا Storyboard از کدهای swift حذف بشه.
حالا چرا قراره حذف بشه؟ چون وقتی پروژه بزرگ و بزرگ تر میشه، با یه فایل سنگین xml مواجه میشیم که خود XCode هم برای لود کردنش به مشکل میخوره. هم اینکه اگه بیش از یه دولوپر روی پروژه در حال کار کردن باشن به کانفلیکت های سخت میخورن که برطرف کردنشون کار دردناکیه ?
حالا خیلی به این موضوع کاری نداریم.
بعد از اینکه این تکنولوژی معرفی شد، خیلی تبش داغ شد و همه جا حرف از SwiftUI بود. تا اینکه بعد چن روز با این توییت بهداد داستان اصلی این چالش شروع شد:
قبل این توییت فقط داکیومنت های خود اپل و ویدیوهاش و مثال هایی که زده بود و حتی یواش یواش توی سایت های دیگه هم داشت زیاد میشد رو میخوندم و کدی نمیزدم. ولی XCode 11 Beta 1 رو دانلود کرده بودم ک کد بزنم ولی نصبش نکرده بودم هنوز ?.
توییت رو که دیدم داستان جدی شد و خیلی شیک فایل XCode رو آنزیپ کردم و اومدم شروع کنم به کد زدن که دیدم ابزارهایی که باید باهاش کار کنم چرا اصن وجود نداره؟ یکمی سرچ کردم که داستان چیه و با این نوت آشنا شدم ?
هیچ موقع تن به استفاده از نسخه های بتای اپل نداده بودم ولی ایندفعه مجبور شدم دانلود کردم و کنار نسخه Mojave که استیبل هست مجبور شدم Catalina Beta 1 رو نصب کنم و XCode رو از اونجا بالا بیارم و شروع کنم به کد زدن.
( بماند که تازگی ها متوجه شدم که نیاز نبود macOS جدید نصب کنم و با همون قبلی هم میشد کد زد فقط previews رو ندارم ? )
( اینم بگم هنوز زیر بار iOS 13 Beta نرفتم که روی گوشیم بریزم و تست کنم. همشو با سیمولیتور تست میکردم )
خلاصه طبق اون چیزایی که توی توییت، بهداد میخواست شروع کردم به کد زدن و سرچ کردن و دیباگ کردن. چون تکنولوژی جدیده خیلی منابع خوبی براش در دسترس نیست. ممکن بود برای یه مشکل ساده ساعت ها وقت میذاشتم و بالاخره برطرف میشد یا اینکه به این نتیجه میرسیدم که این باگ خود SwiftUi ه و فعلا راه حلی نداره ( مثلا یه بخشی از کامپوننت ها رو نمیشه فونتش رو تغیر داد ).
این ۶-۷ روز آخری که خلوت تر بودم سعی کردم حسابی بشینم پاش و تمام انرژیم رو بذارم که به بهترین شکل تمومش کنم.
تعداد سوال هام توی StackOverflow زیاد شد و حسابی درگیر شده بودم. برای یه سری از سوال هام به جواب نرسیدم، یه سری هاش بعد اینکه جواب رو دیدم فهمیدم واقعا سوالم مسخره بود ?. یه سری هاش هم که باگ خود SwiftUI هست و راه حلی نداره فعلا.
نا گفته نمونه که حین کد زدن، اپل همش در حال دادن نسخه های Beta ی بعدی هم برای XCode و هم برای macOS Catalina بود که توی این آپدیت ها یه سری syntax ها کلا عوض میشد یا اینکه اصن حذف میشد و یا چیز جدید اضافه میکرد.
من هم همش در حال تغییر کدهای قبلیم بودم برای اینکه با این نسخه ها سازگاری داشته باشه. چون همه چی Beta هست تمام ارورهایی که کامپایلر نیازه که نشون بده به درستی نشون داده نمیشه و اشتباه ارور میده و ممکنه اصن کلا اروری نده و فقط بره توی لودینگ توی مرحله بیلد گرفتن. ( خلاصه ببینید تو چه اوضاعی ملت باید کد بزنن )
نسخه آخر در حال حاضر Beta 5 ه که من دیگه آپدیت نکردم و تا ۴ بیشتر نرفتم.
سعی کردم از اکثر امکانات SwiftUI استفاده کنم و خیلی از UIKit استفاده نکنم به جز توی نقشه که نمیشد دیگه کاریش کرد. از چندتا امکانات Combine که توی همین WWDC معرفی کرد و به درد Reactive Programing میخوره هم استفاده کردم.
نتیجه کار رو که خودم خیلی دوسش دارم ? و دیروز آماده شد توی گیت هاب گذاشتم و برای بهداد هم فرستادم تا ببینیم خدا چی میخواد.
اینم لینکش ببینید چجوریاس: