نمایش لیست با SwiftUI و داده های فایل JSON ریموت – از صفر تا صد

۱۳۵
۱۴۰۲/۰۶/۱۸
۳ دقیقه
PDF
آموزش متنی جامع
امکان دانلود نسخه PDF

هدف این مقاله نمایش یک روش ساده برای واکشی کردن داده‌ها از یک فایل JSON ریموت و نمایش لیست با SwiftUI است. روشی که در این مقاله معرفی می‌شود، برای به‌کارگیری در نسخه جدید Xcode 11 (11A420a) مناسب است.

نمایش لیست با SwiftUI و داده های فایل JSON ریموت – از صفر تا صدنمایش لیست با SwiftUI و داده های فایل JSON ریموت – از صفر تا صد
997696

کتابخانه‌های بتای اپل به طور مداوم پیش از انتشار نسخه‌های نهایی در حال تغییر هستند و از این رو ممکن است راهنماهای قدیمی در جدیدترین نسخه‌های Xcode کار نکنند.

فرض کنید فایل JSON زیر را که حاوی آرایه‌ای از عناوین فیلم‌ها است در اختیار داریم.

ما می‌خواهیم آن‌ها را روی یک لیست SwiftUI مانند تصویر زیر نمایش دهیم:

نمایش لیست با SwiftUI

ابتدا باید مدلی برای Movie تعریف کنیم که در این مورد یک struct با پروتکل‌های Decodable و Identifiable است. Decodable می‌تواند آن را از فایل JSON دیکد کند و Identifiable می‌تواند در یک لیست آن‌ها را فهرست‌بندی کند. List امکان فهرست‌بندی داده‌های به دست آمده از کلکسیون Identifiable را مانند یک UITableViewController فراهم می‌سازد.

CodingKeys اساساً نام‌های کلید JSON را به نام متغیر Model که ایجاد کردیم نگاشت می‌کند. در این مورد به جای year آن را released می‌نامیم و تنها منظورمان این است که نشان دهیم تا زمانی که نام‌های انتخابی خودتان را در Coding Keys تعریف می‌کنید، می‌توانید از آن‌ها به این مقصود بهره بگیرید.

سپس کلاس واکشی کننده (fetcher) را ایجاد می‌کنیم که فایل JSON را بارگذاری کرده و آن را دیکد می‌کند.

پیش از درک این که چه اتفاقاتی در حال رخ دادن است، باید فریمورک جدید Combine را درک کنیم.

فریمورک Combine یک API اعلانی سوئیفت برای پردازش مقادیر در طی زمان ارائه می‌دهد. این مقادیر می‌توانند انواع زیادی از رویدادهای ناهمگام را نمایندگی کنند. Combine اقدام به اعلان ناشران (publisher-ها) برای افشای مقادیری که ممکن است در طی زمان تغییر یابند کرده است و همچنین مشترکان (subscribers) را اعلان کرده است که آن مقادیر را از ناشران دریافت می‌کنند.

ObervableObject نوعی از شیء است که یک ناشر پیش از تغییر یافتن شیء انتشار می‌دهد. به صورت پیش‌فرض یک ObservableObject اقدام به تولید یک objectWillChange برای ناشر می‌کند که مقدار تغییریافته را پیش از هر گونه تغییر مشخصه Published@ صادر می‌کند.

Published@ پیرامون آرایه movies پوششی ایجاد می‌کند و هر زمان که تغییر یابد، رویدادهایی می‌سازد. متد ()load داده‌های JSON را به صورت ناهمگام از شبکه می‌گیرد و زمانی که داده‌ها بارگذاری شدند، آن‌ها را به movies انتساب می‌دهیم. هنگامی که moves تغییر یابد یک رویداد به مشترک ارسال می‌کند.

در ادامه یک نما-(view)-ی SwiftUI را می‌بینید که یک List با واکشی کننده ObservedObject به عنوان پارامتر دارد و هر زمان که movies به‌روزرسانی شود، این لیست هم به صورت خودکار به‌روزرسانی خواهد شد.

کد کامل به صورت زیر است:

به این صورت به پایان این راهنما می‌رسیم.

اگر این مطلب برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

==

بر اساس رای ۱ نفر
آیا این مطلب برای شما مفید بود؟
اگر پرسشی درباره این مطلب دارید، آن را با ما مطرح کنید.
منابع:
rbreve
PDF
مطالب مرتبط
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *