Как связать набор содержимого NSArrayController с более чем одним выбором NSArrayController? - PullRequest
2 голосов
/ 28 июня 2011

Я новичок в Objective-C, и я люблю его до сих пор.Однако я, кажется, бегаю кругами.Я пытаюсь сделать как можно больше без написания кода.Можно ли эффективно связать набор содержимого одного NSArrayController с выбором двух других NSArrayControllers.

Например, я хочу, чтобы все транзакции (NSArrayController) для выбранного пользователя (NSArrayController) с выбранным продавцом (NSArrayController)).Затем, когда я добавляю новую транзакцию, она связывается с выбранным пользователем и продавцом.

Каков наилучший способ сделать это, чтобы, когда я щелкаю нового пользователя в NSTableView, привязанного к контроллеру пользователя, транзакции вNSTableView, связанный с контроллером транзакций, соответственно изменяется, но все еще сохраняет транзакции, относящиеся к продавцу, выбранные в NSTableView, привязанном к контроллеру продавца (и наоборот)?

Возможно, мне просто нужно изменить свою точку зрения, поскольку я привык жить в необязательном мире.

Ценю любую помощь.

1 Ответ

1 голос
/ 26 ноября 2011

Вы можете регулярно настраивать в IB NSArrayController «TransactionsForUserAndSeller» с его contentSet, привязанным к userArrayController.selection.transactions, а затем фильтровать результаты, используя свой filterPredicate, связанный с sellerArrayController.selection с преобразователем значения, который возвращает NSPredicate.

Реализация этого преобразователя значений может выглядеть следующим образом:

+(Class)transformedValueClass { return [NSPredicate class]; }

+(BOOL)allowsReverseTransformation { return NO; }

-(id)transformedValue:(id)value {

    if (value == nil) return nil;

    return [NSPredicate predicateWithFormat:
            [NSString stringWithFormat:@"seller == %@", value]];
}

Это будет правильно показывать подмножество, но вам нужно написать свой собственный метод add для обработки отношений вручную, получая текущий выбор через выход кконтроллер массива продавца.

...