gpt4 book ai didi

ios - NSManagedObject 子类的 SectionNameKeyPath 类别方法可以带参数吗?

转载 作者:行者123 更新时间:2023-12-01 19:04:02 25 4
gpt4 key购买 nike

我正在执行此 SO 帖子 Custom Core Data SectionNameKeyPath : 特别是 Martin R 的第一个建议是添加一个类别方法来喂我的 sectionNameKeyPath .

在那里,他们有一个名为 acctPeriod 的持久属性用于排序描述符,还有一个名为 periodYear 的类别方法,它适用于 acctPeriod(准确地说,提取其前 4 个字符)。但是,我有许多持久属性,例如 acctPeriod,用户可以为排序描述符选择其中的任何一个,我想在它们上实现相同的方法以作为 sectionNameKeyPath 提供数据。 .换句话说,我想将 acctPeriod 作为参数传递给 category 方法,例如 periodYear:( NSString *) acctPeriod

这可能吗?这种类别方法和 FRC (sectionNameKeyPath) 的代码看起来如何?

谢谢!

最佳答案

“部分名称键路径”是应用于每个托管对象的键路径
并返回部分名称,即
获取结果 Controller 调用[object valueForKeyPath:<sectionNameKeyPath>]划分表格时为每个对象
分成部分。

如果关键路径被实现为(类别)方法,它必须是
一个没有参数的方法,只使用隐式参数 self .
因此,我看不到附加参数如何
在该方法中使用(除非您使用一些全局变量)。

但是,如果创建部分名称的方法对所有
可能的属性(例如在链接示例中获取字符串的前四个字符),您可以将该方法实现为 NSString 上的类别:

@interface NSString (MyAdditions)
- (NSString *)firstFourCharacters;
@end

@implementation NSString (MyAdditions)
- (NSString *) firstFourCharacters {
if ([self length] <= 4)
return self;
return [self substringToIndex:4];
}
@end

然后动态地创建 <yourAttribute>.firstFourCharacters 形式的部分名称键路径。和
sectionNameKeyPath:[NSString stringWithFormat:@"%@.firstFourCharacters", yourAttribute]

在获取的结果 Controller 中,其中 yourAttribute是持久属性
当前用于对表格 View 进行排序。

键值编码机制将
(对于每个托管对象)首先应用 <yourAttribute>到对象,然后应用 firstFourCharacters到结果。

关于ios - NSManagedObject 子类的 SectionNameKeyPath 类别方法可以带参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20965934/

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