gpt4 book ai didi

objective-c - 自定义核心数据填充 NSArrayController 的最佳方式

转载 作者:行者123 更新时间:2023-12-03 16:43:16 25 4
gpt4 key购买 nike

到目前为止,我能找到的所有示例都是 Core Data 和 NSArrayController 之间的直接绑定(bind)。这意味着每个 NSArrayController 恰好映射一个实体。

有没有办法自定义填充到 NSArrayController 中的内容?

例如,我有两个实体:

FileMetaData
ID
FileName
FileSize
Owner(relationship m..1 to SystemUser)

SystemUser
ID
FirstName
LastName
Files(relationship 1..m to FileMetaData)

我有一个 NSArrayController 来填充一个有两列的表格 View ,一列是“FileName”,另一列是“UserName”。用户名来自 SystemUser 实体中的名字 + 姓氏。 NSArrayController 设置为与 FileMetaData 绑定(bind)。

执行此操作的最佳方法是什么?谢谢。

最佳答案

轻松获取 UserName 属性 (FirstName + LastName) 的一种方法是在 SystemUser 上定义一个类别code> 类,具有 UserName 方法,该方法返回适当连接的 FirstNameLastName 属性。

然后,在各种绑定(bind)中,您可以绑定(bind)到 UserName 属性。直接在浏览器中输入,因此未进行测试,UISupport(或任何其他名称)类别SystemUser可能如下所示:

// In SystemUser+UISupport.m

- (NSString *)userName
{
return [NSString stringWithFormat: @"%@ %@", self.FirstName, self.LastName];
}

为了使绑定(bind)在 FirstNameLastName 属性发生更改时起作用,您可能也需要实现此方法:

+(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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com