0

我想用 aNSPopupbutton来显示一个列表。列表中的每个元素都结合NSManagedObject.

"firstname, userid"

我宁愿不添加瞬态属性,因为这会弄脏业务逻辑。

是否有一种简单的方法可以合并内容值中的两个值NSPopupbutton

看起来 NSLabel 有一个 DisplayPattern。尽管如此,这似乎也只允许绑定到一个属性,尽管它可能适应字符串格式。

OSX 不是 iOS。

4

1 回答 1

0

在保持视图代码与模型代码分离的同时执行此操作的常用方法是使用 Objective-C 类别。如果您的托管对象子类名为MyManagedObject,您将执行以下操作:

@interface MyManagedObject (ViewSupport)

@property (nonatomic, readonly) NSString* stringForPopUpButton;

@end


@implementation MyManagedObject (ViewSupport)

+ (NSSet *)keyPathsForValuesAffectingStringForPopUpButton
{
    return [NSSet setWithObjects:@"firstname", @"userid", nil];
}

- (NSString *)stringForPopUpButton
{
    return [NSString stringWithFormat: @"%@, %@", self.firstname, self.userid];
}

@end

此代码可以出现在单独的文件中,或其他任何文件中。这种模式适用于简单的事情,比如组合两个属性。对于更复杂的转换,逻辑通常存在于NSViewController子类中。模型通常使用-representedObject属性推送到这些对象中,然后可以在 Xcode/InterfaceBuilder 等中构建随附的视图。这种模式使数据处理逻辑与使用它的视图/nib/xib 保持耦合。

于 2013-06-10T23:45:05.447 回答