سؤال

وأدركت للتو هناك طريقتان لاستخدام NSArrayController.

وربط وحدة تحكم إلى وصفيف وإضافة الكائنات إلى صفيف. أو لا تستخدم أي صفيف على الإطلاق، وإضافة كائنات مباشرة إلى وحدة تحكم.

[racesArray addObject: [[Race alloc] initWithName:@"Human"] ];

أو

[myRacesController addObject: [[Race alloc] initWithName:@"Human"] ];

ونظرا لأن كلا نسخة تعمل بشكل جيد لاحتياجاتي أنا أتساءل التي هي الطريقة الصحيحة لاستخدامه. أعتقد أن استخدام صفيف قد يكون أفضل ولكن منذ NSArrayController هي أيضا قادرة على تخزين البيانات لماذا يجب أن لا تستخدم هذه الميزة؟

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

المحلول

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

والطريقة أوصي هو ربط وحدة تحكم مجموعة، ثم تنفيذ <وأ href = "http://developer.apple.com/documentation/Cocoa/Conceptual/ModelObjects/Articles/moAccessorMethods.html" يختلط = "نوفولو noreferrer "طرق استرجاع مجموعة> KVC المتوافقة للحصول على الممتلكات الخاصة بك، واستخدام تلك في كل مكان في التطبيق الخاص بك (ما عدا في أساليب init وdealloc الفئة التي).

وبهذه الطريقة، الكائن الخاص بك يمكن أن تتحول مجموعة خاصة بها دون الحاجة إلى إضافة صراحة الإخطارات المنظمة من أو تعرف عن وحدة تحكم صفيف.

نصائح أخرى

وكلا الاتجاهين على ما يرام. إذا كنت لا تعطيه مجموعة، ويحافظ على NSArrayController تلقاء نفسها.

ووNSArrayController غير المنظمة من متوافقة للربط مع عناصر واجهة المستخدم. كما أن لديها بيانات التعريف إضافية لمجموعة من الأشياء مثل selectedObject. هذه الكائنات الراحة غير متوفرة مع NSArray. NSArray هو مجرد مجموعة مع مشغلي مجموعة منتظمة وأساليب محددة على ذلك. استخدامه إذا لم يكن لديك تحتاج إلى ربط مع عناصر واجهة المستخدم.

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