Table of Contents
داده های اصلی به عنوان چارچوب اصلی اپل برای مدیریت گراف شی پایدار در برنامه های iOS است.به جای مجبور کردن توسعه دهندگان برای نوشتن SQL خام یا مدیریت فایل های زنجیره ای، داده های اصلی یک رابط شی گرا سطح بالا را فراهم می کند که پیچیدگی های ذخیره سازی، ردیابی تغییر و مدل سازی داده ها را کنترل می کند.
آشنایی با معماری داده های Core Data Architecture
داده های هسته به سادگی یک پایگاه داده نیست، یک چارچوب مدیریت گرافی است که می تواند داده ها را به دیسک ادامه دهد، بلکه روابط شی درون گرا، مدیریت غیر قابل تشخیص و اعتبار را نیز مدیریت می کند.معمار حول چهار جزء کلیدی است که با هم کار می کنند تا آنچه را که معمولاً به آن می گویند، شکل دهند.
داده های اصلی Stack
هر پیاده سازی داده های هسته ای نیازمند مجموعه خاصی از اشیاء است که به یک دستور تعریف شده مرتبط هستند.
- زمینه Object مدیریت شده (NS AdminObjectContext): صفحه اول که توسعه دهندگان با اشیاء مدیریت شده کار می کنند، همه تغییرات در داخل یک زمینه قبل از ذخیره شدن به فروشگاه مداوم رخ می دهد.
- هماهنگ کننده فروشگاه (NSPersistentStoreCoerator): اعمال به عنوان یک پل بین زمینه و فروشگاه مداوم واقعی (بازدید کنندگان) دسترسی و تضمین یکپارچگی داده ها.
- مدل Object Object Model (NS AdminObject Model): توصیف نهادهای، ویژگی ها و روابط در طرح داده ها است.این معمولا به صورت بصری در فایل .xcdata Modeld تعریف می شود.
- فروشگاه پرستکار: مکانیسم ذخیره سازی واقعی، که می تواند SQLite، binary یا in-memory باشد. SQLite پیش فرض برای برنامه های تولید است.
توسعه مدرن iOS اغلب از کلاس استفاده می کند که به طور خودکار کل پشته را ایجاد و پیکربندی می کند.این لایه دیگ بخار را حذف می کند و احتمال پیکربندی را کاهش می دهد.
تنظیم داده های هسته ای در پروژه شما
اضافه کردن داده های هسته به یک پروژه iOS نیازمند چندین گام عمدی است که هر یک از آنها پایه و اساس مدیریت داده ها را می سازد.این فرآیند با ایجاد یک فایل مدل داده شروع می شود، سپس تعریف نهادهای شما و در نهایت ادغام پشته با چرخه عمر برنامه شما.
ایجاد مدل داده
با اضافه کردن یک فایل جدید به پروژه Xcode خود با استفاده از مدل داده (extension.xcdata Modeld) در این ویرایشگر بصری، شما نهادهای (معادل جداول)، ویژگی های آنها (قطب)، و روابط به دیگر نهادهای تعریف کنید.شما همچنین می توانید انواع داده ها، مقادیر پیش فرض، قوانین و گزینه های نمایه سازی را برای عملکرد جستجو مشخص کنید.
تعریف کردن احساسات و روابط
هر نهاد نشان دهنده نوعی از مدیریت برنامه شما، مانند یک کاربر، Task یا Product Characters ویژگی های آن نهاد (نام، قیمت، تاریخ و غیره) است که به اشخاص متصل می شود، داده های اصلی را قادر می سازد تا گراف های شی را ردیابی کنند و به طور خودکار حذف یا به روز رسانی را منتشر کنند.
هنگام طراحی روابط، توجه به قانون حذف . Options شامل Nullify، Cascade و Deny است که انتخاب قانون اشتباه می تواند منجر به از دست دادن داده های غیرمنتظره یا سوابق یتیم شود، اغلب برای روابط والدین و کودک مناسب است، در حالی که Nullify برای انجمن های اختیاری به خوبی کار می کند.
تولید NSObject Subclasses
هنگامی که مدل واحد شما کامل است، Xcode می تواند به طور خودکار کلاس های Swift را برای هر واحد تولید کند.این زیر کلاس ها از به ارث می برند و شامل خواص و روابطی که شما تعریف می کنید.شروع با Xcode 8، رویکرد توصیه شده این است که گزینه های "کد" را به عنوان Class Definition [F:1] انتخاب کنید.
اجرای عملیات CRUD
با استفاده از پشته، می توانید اشیاء را وارد کنید، به روز رسانی کنید و اشیا مدیریت شده را با استفاده از یک حذف کنید، تمام عملیات باید در داخل زمینه انجام شود و تغییرات تنها پس از تماس موفق باقی می ماند.
ایجاد و پس انداز کردن اشیاء
برای قرار دادن یک شیء جدید، از استفاده کنید و سپس خواص آن را تنظیم کنید، پس از تمام تغییرات، تماس بگیرید همیشه تماس های ذخیره شده را در یک بلوک برای رسیدگی به خطا و به ویژه در طول اقدامات کاربر آغاز شده است.
انتقال داده ها با Predicates و مرتب Descriptors
مکانیسم اصلی برای جستجوی اشیاء است. [۵] می توانید نتایج را با استفاده از محدود کنید (به عنوان مثال، و نتایج سفارش با داده های هسته همچنین از پیش فرض های ترکیب، زیرک ها و روابط مشتاقانه برای داده های بزرگ، همیشه اندازه گیری با استفاده از (FLT:12) و در نظر گرفتن حافظه.
بالا رفتن و عدم تمایل
بالا بردن یک شی به سادگی تغییر خواص آن در متن است؛ داده های هسته به طور خودکار تغییرات را ردیابی می کند.برای حذف، فراخوان (FLT13) به یاد داشته باشید که پس از آن زمینه را ذخیره کنید، از (FLT:14) استفاده کنید که به طور مستقیم در فروشگاه مداوم بدون بارگیری اشیاء به حافظه، به طور چشمگیری بهبود عملکرد.
بهترین روش برای داده های Core Production-Ready
حتی یک پشته داده های Core به خوبی پیکربندی شده می تواند تبدیل به یک تنگنا یا منبع اشکالات اگر به دقت مدیریت نمی شود، پس از الگوهای ثابت اطمینان حاصل می کند که برنامه شما پاسخگو، پایدار و مقیاس پذیر باقی مانده است.
امنیت Thread Safety and Concurrency
زمینه های داده های هسته ای به طور پیش فرض ایمن نیستند.هرگز زمینه ای بین موضوعات را به اشتراک نگذارید، از روش برای ایجاد یک چارچوب صف خصوصی برای عملیات پس زمینه استفاده کنید، زمانی که دسترسی به اشیاء در موضوعات اصلی، استفاده از FLT 17 یا برای اطمینان از سلول های نخ.
نسخه برداری و مهاجرت
همانطور که برنامه شما تکامل می یابد، مدل داده های شما تغییر خواهد کرد - اضافه کردن ویژگی ها، نهادهای تغییر نام، و یا تغییر روابط. داده های اصلی از دو نوع مهاجرت پشتیبانی می کند: lightweight Migration و مهاجرت سفارشی انتقال آسان انتقال انتقال می دهد (اضافه کردن ویژگی های تغییر، اختیاری، ویژگی های تست خودکار اگر شما یک گزینه های نقشه برداری را به طور کامل اجرا کنید، و تجزیه و تغییر می دهد.
بهینه سازی عملکرد
عملکرد داده های کارآمد با طراحی مدل داده ها شروع می شود. شاخص بر روی ویژگی هایی که اغلب در پیش بینی ظاهر می شوند، استفاده از کل گراف های شی که تنها یک زیرمجموعه مورد نیاز است؛ به جای آن، از استفاده کنید و پشتیبانی از داده های اصلی (F:2LT) را از طریق یک تابع کامل (Ffirting) استفاده کنید.
خطای مدیریت
هر عملیات را به طور بالقوه می تواند شکست دهد.همیشه این تماس ها را در بلوک های FLT 25 بسته و پیام های خطای معنی دار را به کاربر ارائه دهید.Save شکست اغلب به دلیل خطاهای اعتباری یا نقض محدودیت رخ می دهد، بنابراین بررسی خطا مربوط به اطلاعات هسته حاوی چندین خطای اساسی است که می توانید آن را از طریق ارائه بازخورد خاص برای عملیات های دسته ای به طور خودکار انجام دهید.
ادغام داده های هسته ای با SwiftUI
SwiftUI پشتیبانی درجه اول از داده های هسته را از طریق بسته بندی اموال و ارزش های محیط فراهم می کند. [FLT 27] بسته بندی به طور خودکار زمینه اصلی را مشاهده می کند و هنگامی که تغییرات داده ها را تغییر می دهد، می توانید به طور مستقیم در اعلان ملک، به صورت خودکار، بافت مدیریت شده را به محیط زیست با استفاده از [LT:28] کار کنید تا یک مدل مشاهده سنگین را انجام دهید یا یک مدل مشاهده کنید.
SwiftUI همچنین مدیریت غیر قابل اجرا را ساده می کند: تنظیم (FLT 29) در زمینه و SwiftUI به طور خودکار با حرکات غیر / do سیستم ادغام می شود.
داده های اصلی در مقابل سایر گزینه های پر اصرار
در حالی که داده های اصلی پررونق ترین و یکپارچه ترین راه حل برای ذخیره سازی محلی iOS است، همیشه بهترین انتخاب نیست.
- UserDefaults: [FLT 1] مناسب برای مقدار کمی از ترجیحات کاربر، اما نه برای داده های پیچیده و بزرگ.
- Realm: یک API ساده تر و به روز رسانی های اتوماتیک را ارائه می دهد، اما وابستگی را اضافه می کند و به طور عمیق با SwiftUI ادغام نمی شود.
- راویان SQLite: حداکثر کنترل و عملکرد را برای مجموعه داده های بسیار بزرگ یا پرس و جو پیچیده، اما نیاز به مدیریت اتصالات، مهاجرت و نخ زدن به صورت دستی.
- ]CloudKit + داده های هسته ای: [FLT 1 ] برای برنامه های نیاز به همگام سازی iCloud، اپل پل های داده های هسته و CloudKit، به طور خودکار همگام سازی تغییرات محلی در ابر.
برای اکثر برنامه های استاندارد iOS که نیاز به داده های ساختاری، روابط و قابلیت آفلاین دارند، داده های اصلی به دلیل ادغام یکپارچه آن با پلت فرم و پشتیبانی مداوم اپل، انتخاب توصیه شده باقی می مانند.
نتیجه گیری
داده های هسته یک سیستم مدیریت گراف شی را فراهم می کند که پیچیدگی های ذخیره سازی مداوم، ردیابی تغییر و مدیریت رابطه را از طریق درک معماری آن - از متن شیء مدیریت شده به ظرف مداوم - و پس از روش های اثبات شده برای هم ارزی، عملکرد و مدیریت خطا، توسعه دهندگان می توانند برنامه هایی را بسازند که قوی و پاسخگو هستند، آیا شما یک لیست ساده برای لیست یا یک داده های کاربردی، باز کردن اطلاعات ارزشمند است که مدیریت داده های کلیدی است.
برای مطالعه بیشتر، با اسناد داده های هسته ای اپل مشورت کنید راهنمای برنامه نویسی داده و منابع اجتماعی مانند ] راری وندرlich داده های اصلی توسط آموزش برای تمرینات دستی و بینش عمیق تر به موضوعات مهاجرت و مسائل پیشرفته مانند ارزهای دیجیتال.