到目前为止,我能找到的所有示例都是Core Data和NSArrayController之间的直接绑定。这意味着每个NSArrayController都精确地映射一个实体。
有没有一种方法可以自定义填充到NSArrayController中的内容?
例如,我有两个实体:
FileMetaData
ID
FileName
FileSize
Owner(relationship m..1 to SystemUser)
SystemUser
ID
FirstName
LastName
Files(relationship 1..m to FileMetaData)
我有一个NSArrayController来填充具有两列的表视图,一列是“ FileName”,另一列是“ UserName”。用户名来自SystemUser实体中的名字+姓氏。 NSArrayController设置为与FileMetaData绑定。
做这个的最好方式是什么?谢谢。
最佳答案
轻松获得UserName
属性(FirstName
+ LastName
)的一种方法是使用SystemUser
方法在UserName
类上定义类别,该方法返回正确连接的FirstName
和LastName
属性。
然后,在各种绑定中,您可以绑定到UserName
属性。直接输入到浏览器中,因此未经测试,UISupport
(或任何其他名称)类别SystemUser
可能看起来像这样:
// In SystemUser+UISupport.m
- (NSString *)userName
{
return [NSString stringWithFormat: @"%@ %@", self.FirstName, self.LastName];
}
为了在
FirstName
或LastName
属性更改时使绑定起作用,您可能也想实现此方法:+(NSSet*)keyPathsForValuesAffectingUserName
{
return [NSSet setWithObjects: @"self.FirstName", @"self.LastName", nil];
}
最后,为了完整起见,您可以在头文件中声明新的只读属性:
// In SystemUser+UISupport.h
@property (readonly) NSString *userName;
关于objective-c - 定制核心数据如何填充NSArrayController的最佳方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11020075/