وللتحرير NSTableView مع الربط لم يتم تغيير القيم في نموذج

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

سؤال

وهنا هو بلدي الإعداد.

في بلدي مندوب التطبيق، لدي خاصية تسمى currentFoo. تم تعيين الخاصية currentFoo إلى مثيل فو المحدد حاليا. الحالات فو كل تحتوي على خاصية وهو NSMutableArray دعا النتائج. الكائنات في النتائج التي يمكن أن تكون من أنواع مختلفة، NSNumber، NSString، الخ ...

ولدي NSTableView التي يتم عرضها في أوقات معينة التي تسمح للمستخدم لرؤية مجموعة من النتائج في currentFoo. وهناك أيضا UI للسماح بإضافة إلى وحذف من نتائج.

ووNSTableView يحتوي على عمود واحد الذي لا بد أن مفتاح تحكم arrangedObjects على NSArrayController ل. كنت قد كتبت فرعية NSValueTransformer التي يتم استخدامها في هذا ملزم لتحويل مختلف أنواع الممكنة وجدت في مجموعة النتائج لتمثيل السلسلة التي أريد هو مبين في الجدول العمود.

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

وهذا كله يعمل كبيرة فقط، إضافة وإزالة وعرض currentFoo.results في NSTableView يعمل تماما كما أريد.

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

وبعد ذلك يحدث الخطأ عند محاولة الارتباطات ثم لتحديث هذا النموذج مع قيمة تحويل الاتجاه المعاكس:

<اقتباس فقرة>   

والكاكاو الربط: خطأ قيمة الضبط   لمسار مفتاح من وجوه 0 (من ملزمة   الكائن (خالية)): [setValue: forUndefinedKey:]:   هذه الفئة ليست قيمة المفتاح   الترميز المتوافقة للمفتاح.

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

وهو محل تقدير أي مساعدة.

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

المحلول

ومفتاح نموذج لا يمكن أن يكون بالتالي خالي رسالة الخطأ التي تحصل عليها.

وتغيير الأشياء نتيجة من كونها كائنات بدائية (سلاسل، أرقام محاصر، الخ) لنموذج الكائنات (من FooResult الطبقة)، وتعيين نموذج مسار مفتاح هي ملزمة لاسم الخاصية من هذه الكائنات النموذج أنه سيكون لديك وعرض جدول تنضج.

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

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