سؤال

في تطوير تطبيق iPhone الخطير الأول (يعني أود أن أخرجه فعليًا على appstore) ، كنت بحاجة إلى طريقة جيدة لتمثيل بياناتي. بدلاً من الذهاب مع البيانات الأساسية ، قررت (بغباء ، على ما أعتقد) استخدام الفصول لتمثيل بياناتي.

لقد أنشأت ثلاث فصول ، MMDOT ، MMShowMovement ، و MMSHOW. يحمل MMShowmovement مثيلات من فئة MMDOT في صفيف ، حيث يحمل MMSHOW مثيلات من MMSHOWOVEMEMENT. بدا وكأنه طريقة لطيفة للقيام بذلك ، كل فصل لديه الكثير من المنطق الذي يجب أن يمر به ، لذلك اعتقدت أن الفصول تبدو وكأنها طريقة جيدة لتمثيل كل هذه البيانات.

سؤالي هو ، هل هناك طريقة سهلة لحفظ مثيلات هذه الفئات حتى أتمكن من استعادة البيانات بعد إعادة فتح التطبيق؟ لقد قمت بتطبيقات على OS X باستخدام nskeyedarchiver ، هل سيكون مشابهًا على iPhone؟ هل سيكون من الأسهل البدء مرة أخرى في استخدام البيانات الأساسية بدلاً من ذلك (هذه الكائنات معقدة للغاية ، خاصةً MMDOT مع حوالي 15 متغير مثيل ، الآن بعد أن أنظر إليها ، ربما ليست معقدة)؟

أنا حقا في حيرة هنا.

هل كانت مفيدة؟

المحلول

يمكنك استخدام nskeyedarchiver على الإطلاق لاستمرار الأشياء الخاصة بك. أنا من محبي أي من الطريقة ، يكمن القرار في الغالب في احتياجات التطبيق الخاصة بك. لا أعتقد أنه سيكون من العمل كثيرًا لإعادة تشكيل الأشياء الخاصة بك في كوراتا. دون معرفة أي شيء عن التطبيق الخاص بك ، سأقول إذا كنت تقوم باستمرار بسيط من خلال نموذج بسيط قد لا تحتاج إلى بيانات أساسية ، إذا كان لديك علاقات معقدة وستكون قراءة/مستمرة بشكل متكرر أثناء بيانات جلسة التطبيق الأساسية على الأرجح توجو.

نصائح أخرى

إذا كان لديك الكثير من مثيلات الكائنات ، فمن المحتمل أن تكون أفضل حالًا باستخدام البيانات الأساسية - فستساعد على ذاكرة التخزين المؤقت للأشياء ، ومساعدتك في الاستعلامات للحصول على مجموعات محددة من الكائنات ، وما إلى ذلك. يعد KeyArchiving أكثر فائدة حقًا إذا كنت تنقذ حفنة من الحالات ، ولكن لديك بعض الجوانب السلبية - على وجه الخصوص ، من الصعب تعقب تسرب الذاكرة من الكائنات غير المستقرة.

يمكن أن تقوم البيانات الأساسية أيضًا بالترحيل على النتائج بالنسبة لك أيضًا ، بحيث لا تجلبها في محتويات entre من مجموعة كبيرة إذا لم تكن بحاجة إليها.

كنت أبحث في تسلسل فصولي في اليوم الآخر وذهبت مع استخدام NSUSERDEFAULTS. أنا فقط أعطي جميع الأجزاء الداخلية لكائناتي مفتاحًا فريدًا يعتمد على الكائن. يبدو أنه يعمل بسرعة بالنسبة لي.

كتب مدونة عنها هنا: http://technolojiadev.blogspot.com/2009/12/Serialize-This.html

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top