Объединение нескольких локализованных путей левой клавиши в одном NSPredicateEditorRowTemplate?
Я пытаюсь реплицировать поиск метаданных на основе NSPredicateEditor в приложении.
Я бы предпочел получить точный NSPredicateEditor от Finder бесплатно, но если у кого-то нет лучшего ответа на этот вопрос, похоже, мне придется повторить поиск Finder как можно лучше.
При работе над зеркалированием Kind
вариант, я попал в проблему. Я начинаю с сохранения поиска Finder Spotlight со всеми доступными Kind
опции.
Проблема, которую я вижу, состоит в том, что один отображаемый пользователем "Добрый" текст содержит несколько ключевых путей, которые используются в результирующем NSPredicate в зависимости от того, какое правильное значение выбрано. "Добрый" может представлять (как минимум) Когда я создаю NSPredicateEditorRowTemplate, я передаю массив левых выражений, операторов и правых выражений. Затем создается шаблон строки, содержащий все возможные перестановки Left / Operator / Right. (Примечание: я создаю все Finder не создает все возможные перестановки 3-х левых ключевых путей и 12 правых значений. Это выборочное назначение определенного левого ключевого пути на основе значения, выбранного справа. Я локализую шаблоны строк, используя Я могу назначить одну и ту же локализацию "Kind" двум разным ключевым путевым выражениям в двух разных Когда у меня есть два шаблона строки, локализованные для "Kind" с использованием одного и того же левого ключевого выражения пути, следующая цитата "merge the templates" верна, и в списке отображается только один "Kind". Правое всплывающее окно - это объединение всех пар из двух шаблонов. Во время выполнения NSPredicateEditor объединит шаблоны вместе, а второе всплывающее окно покажет объединение всех операторов ваших шаблонов дат. http://www.cocoabuilder.com/archive/cocoa/282859-nspredicateeditorrowtemplate-and-dynamic-templateviews.html Однако, когда я создаю два шаблона строки, оба локализованных в "Kind", используя разные выражения пути левого ключа, я вместо этого получаю две "Kind" строки во всплывающем окне левого выражения. Шаблоны не объединены. Как мне повторить поведение Finder? Мне нужно каким-то образом объединить пути левых клавиш, если они имеют одинаковую локализацию, даже если они представляют разные пути / выражения клавиш, в результате получается единый шаблон строки с несколькими путями левого ключа, каждый с независимым набором правых значений.kMDItemContentTypeTree
, _kMDItemGroupId
, или же kMDItemKind
,NSPredicateEditorRowTemplate
с программно, а не в Интерфейсном Разработчике).NSRuleEditor
"s formattingDictionary
свойства, на основе руководства, найденного здесь: http://funwithobjc.tumblr.com/post/1482915398/localizing-nspredicateeditorNSPredicateEditorRowTemplate
s.
0 ответов
Мое решение заключалось в том, чтобы иметь одно исходное свойство, а затем несколько переименованных геттеров, возвращающих это свойство.
Каждый kindImage
-type getter - это ключевой путь, к которому можно независимо обращаться в редакторе предикатов.
@objc lazy var kind: String = { return getKind() }()
@objc lazy var kindImage = kind
@objc lazy var kindText = kind
@objc lazy var kindDocument = kind
Несмотря на то, что возвращается одно и то же значение, строки редактора предикатов не объединяются, потому что они используют разные ключевые пути.