هل هناك طريقة أفضل لإجراء تسلسل لكائنات plist-y في Objective-C؟

StackOverflow https://stackoverflow.com/questions/1652479

سؤال

تعجبني إمكانية تسلسل plist لمجموعات صغيرة من الكائنات:إنه بسيط، والتخزين هو XML، وما إلى ذلك.لكنني أجد أن تحديد القيم في القواميس أمر مرهق:

[myDict setObject:keepThis forKey:@"ivar"];

أفضّل كثيرًا استخدام كائن مشتق من الفئات (أو حتى بنيات فقط):

myObj.ivar = keepThis

...ثم أرسل رسالة إلى مجموعة للحصول على قائمة.يمكن تقييد الفئات/البنيات المستخدمة لهذا الغرض بحيث يتم تعيينها بشكل مباشر وسهل لقائمة العناصر الأولية؛على سبيل المثال، يمكن تعيين myObj إلى NSDictionary ويمكن وضع متطلبات على ivars بحيث تكون واحدة من العناصر الأولية في قائمة plist.

هل قام شخص ما بالفعل ببناء منشأة لهذا الغرض، أم يجب أن أقوم بإنشاء منشأة خاصة بي؟

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

المحلول 5

ورأيت هذا نشر في أي مكان آخر، وإنما هو بالضبط ما كنت أبحث عنه. الإجابات فوق نقطة إلى المكونات الخام، ولكن هنا هو عليه، وكلها مغلفة المتابعة: HTTP: // retaincount.com/blog/؟p=7

نصائح أخرى

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

هناك أيضًا طريقة لذلك اطلب مثيلًا للحصول على قائمة بخصائصه, ، على الرغم من أنه تبين أنه يتعين عليك كتابة بعض التعليمات البرمجية بنفسك لإنجاز هذا العمل.(على الرغم من ذلك، يمكنك استخدام الاستبطان وقت التشغيل لتنفيذ ذلك إذا أردت.) تحرير 2 يناير 2011: -[NSObject attributeKeys] لم يعد يظهر في وثائق iOS.لقد قمت بتحرير الرابط للإشارة إلى وثائق Mac، ولكن انتبه إلى أن هذا قد يكون خيارًا فقط على هذا النظام الأساسي.

(ال NSCoding البروتوكول هو طريقة أخرى للسماح للكائنات الخاصة بك بتخزين/استعادة نفسها، ولكن التخزين ثنائي، وليس XML، ولا تزال مسؤولاً عن الحصول على/وضع كل قيمة تهمك عندما يطلب منك النظام القيام بذلك.)

وأنت قد ترغب في التحقق من <لأ href = "https://stackoverflow.com/questions/1631358/is-there-a-way-to-dynamically-determine-ivars-of-a-class-at- وقت التشغيل في والكاكاو المشارك / 1631611 # 1631611 "> هذا السؤال SO حيث يناقش وضع إيفارس مثيل في قاموس في وقت التشغيل.

ولكي تتمكن من استخدام خصائص هذا، وكنت بحاجة إلى مجموعة محددة مسبقا من المفاتيح الممكنة. لا يمكنك استخدام أسماء التعسفية لدى تركيب نقطة - أنه كان لابد من الملكية المعروفة أو استرجاع من المعامل الأول. لذلك لا يمكن أن يكون هناك شكل عام من ذلك. ولكن إذا كنت لا تجعل واحدة خاصة بك، وتحول إلى القاموس بسيطة كما تفعل [self dictionaryWithValuesForKeys:listOfProperties].

scroll top