قوالب صف مسند تم إنشاؤها تلقائيًا للمفتاح إلى Many؟
-
03-07-2019 - |
سؤال
في نموذج كائن البيانات الأساسي الخاص بي ، لدي كيان foo مع وجود علاقة إلى حد كبير (مع عكسي إلى حد) إلى BAZ المسمى BAZ. BAZ لديه خاصية سلسلة تسمى "TAG". عندما أستخدم [NSPredicateRowEditorTemplate templatesWithAttributeKeyPaths:[NSArray arrayWithObject:@"baz.tag"] inEntityDescription:FooDescription]
لإنشاء محرري الصفوف لـ nspredicateeditor ، تحتوي النتيجة على (كما هو متوقع) قالب صف مثل
popup: baz.tag] [popup: يحتوي على | هو | ليس | ...] [Textfield
عندما أختار "يحتوي" من المنبثقة ، يعمل استعلام مع المسند كما هو متوقع. إذا اخترت أيًا من المنبثقة الأخرى (على سبيل المثال "هو") ، أحصل على الخطأ التالي: "لمفتاح إلى Many غير مسموح به هنا". هل يمكنني استخدام [NSPredicateRowEditorTemplate templatesWithAttributeKeyPaths:inEntityDescription:]
أو هل يجب علي بناء محرر الصف يدويًا؟
المحلول
يبدو أن القالب الذي تم إنشاؤه تلقائيًا (باستخدام [NSPredicateRowEditorTemplate templatesWithAttributeKeyPaths:inEntityDescription:]
) لا يمكن أن تنتج المشغلين الصحيحة. الحل هو إنشاء القالب باستخدام يدويًا [NSPredicateEditorRowTemplate initWithLeftExpressions:rightExpressionAttributeType:modifier:operators:options:]
. على سبيل المثال:
id template = [[NSPredicateEditorRowTemplate initWithLeftExpressions:[NSArray arrayWithObject:[NSExpression expressionForKeyPath:@"baz.tag"]] rightExpressionAttributeType:NSStringAttributeType modifier:NSAnyPredicateModifier operators:keywordOperators options:0];