استخدام المسندات على وحدة تحكم مجموعة لتصفية الأجسام ذات الصلة
-
21-08-2019 - |
سؤال
ولدي تطبيق باستخدام الأساسية البيانات والارتباطات. أريد أن يكون لها NSSearchField يمكن البحث من خلال NSArrayController منضم إلى NSTableView. وحدة تحكم مجموعة يحتوي على كائنات البيانات الأساسية التي لديها حقل "اسم". لدي الإعداد NSSearchField مثل هذا:
Bind To: the array controller
Controller Key: filterPredicate
Predicate Format: name contains[c] $value
وهذا يعمل. أريد أن توسيع نطاقه بحيث يمكن البحث في مجالات الأجسام المتصلة بتلك في وحدة تحكم صفيف. كل كائن في وحدة تحكم مجموعة لديه علاقة لكثير إلى نوع آخر من كائن يسمى "سمة" الذي يحتوي على حقل يسمى "اسم". حاولت ما يلي:
Bind To: the array controller
Controller Key: filterPredicate
Model Key Path: tags
Predicate Format: name contains[c] $value
ولكن هذا لا يعمل. لا يحدث أي شيء في NSTableView عندما النص مساهمة في NSSearchField. ما هو الخطأ في ذلك؟
المحلول
وملزم لtags
حيث يحاول هذا مسار مفتاح نموذج لربط المسند حقل البحث لarrayController.filterPredicate.tags مسار مفتاح. منذ الملكية filterPredicate وحدة تحكم مجموعة ليس لديها خاصية العلامات، وربما كنت 'مفتاح لم يتم العثور "gettings الاستثناءات التي يتم تسجيل بصمت. بدلا من ذلك، مشيرة إلى أن يتم تطبيق filterPredicate من NSArrayController لأعضاء مجموعة، وتريد الربط المزمع إقامتها شيئا من هذا القبيل:
Bind To: <array controller>
Controller Key: filterPredicate
Predicate Format: ANY self.tags contains[c] $value
ويمكن أن تكون مكتوبة self.tags
كما tags
فقط، ولكن أعتقد أن هذا يجعل من أكثر وضوحا أن علامات هي خاصية الكائن الذي يتم تطبيق المسند.