我想使用NSPopupbutton
来显示列表。列表中的每个元素都会合并来自NSManagedObject
的两个属性。
"firstname, userid"
我宁愿不添加瞬态属性,因为这会弄脏业务逻辑。
是否有一种简单的方法可以合并NSPopupbutton
看起来NSLabel有一个DisplayPattern。尽管如此,它似乎也只允许绑定到一个属性,尽管它可以适应字符串格式。
OSX而不是iOS。
答案 0 :(得分: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等中构建附带的视图。此模式使数据保持逻辑与使用它的view / nib / xib相结合。