gpt4 book ai didi

ios - 核心数据 - 在 Group By 中使用 transient 属性

转载 作者:可可西里 更新时间:2023-11-01 03:55:23 25 4
gpt4 key购买 nike

我正在创建一个包含一些聚合数据的 UITableView。在此过程中,需要使用节标题对表格 View 单元格进行排序和分组。

问题是我想在 NSFetchRequest 中使用 transient 属性来生成章节标题和结果排序。问题是,在设置 NSFetchRequest 时,我收到“NSInvalidArgumentException”,原因是:“传递给 setPropertiesToFetch 的 key 路径 player.fullName 无效”。

NSFetchRequest 的主要实体是一个具有以下属性的 Player 实体:firstName 和 lastName。为了对数据进行排序和分组,引入了一个 transient 属性“fullName”。这是 lastName 和 firstName 属性的简单串联。

目前尝试过的有:

a) 定义 -(NSString*)fullName 方法

b) 定义一个@property (nonatomic,readonly) NSString *fullName

c) 添加一个@dynamic fullName

d) 将 fullName 属性添加到 Player 实体并使其成为 transient 。

是否有任何想法或没有办法在包含 group by 子句的 NSFetchRequest 中选择 transient 属性。

感谢任何帮助。

最佳答案

好吧,最后看来在 NSFetchResults 和 Group By 的组中包含 transient 属性是不可能的。

jrturton 的伟大建议得到了采纳。最后, transient 属性 fullName 很容易在更新实体时生成,并且很少更新,因此解决方案是停止使用 transient 属性并创建一个完全成熟的属性。只需将其视为极端的非规范化即可。

解决方案是设置以下内容

-(void)setLastName:(NSString*)aName
{
[self willChangeValueForKey: @"lastName" ];
[self setPrimitiveValue: aName forKey: @"lastName" ];
[self updateFullName];
[self didChangeValueForKey: @"lastName" ];
}

-(void)setFirstName:(NSString*)aName
{
[self willChangeValueForKey: @"firstName" ];
[self setPrimitiveValue: aName forKey: @"firstName"];
[self updateFullName];
[self didChangeValueForKey: @"firstName" ];
}

这将 fullName 更新为 Player 实体的属性并删除了我的问题。希望对您有所帮助。

关于ios - 核心数据 - 在 Group By 中使用 transient 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9359437/

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