gpt4 book ai didi

objective-c - 核心数据 valueForKeyPath 返回 0

转载 作者:行者123 更新时间:2023-12-03 17:15:26 24 4
gpt4 key购买 nike

我有一个核心数据项目,其中包含一种“主”实体,该实体保存年份值(int 16)和一些其他值。还有一些其他“子”实体与该主机具有多对一的关系。在其他实体之一中,我想设置几个默认值,即开始日期和结束日期。默认值应该是分配给主实体的年份的开始和结束。所以我用了这个:

- (void) awakeFromInsert {
int currentYear = [[self valueForKeyPath: @"master.year"] intValue];
NSString *currentYearStart = [NSString stringWithFormat: @"%d-01-01 00:00:01 +0000", currentYear];
NSString *currentYearEnd = [NSString stringWithFormat: @"%d-12-31 23:59:59 +0000", currentYear];
[self setStartDate: [NSDate dateWithString: currentYearStart]];
[self setEndDate: [NSDate dateWithString: currentYearEnd]];
}

当我运行这个时,currentYear最终总是0,即使master的“year”属性的值为2011。我尝试设置“int currentYear = 2011”,然后代码按预期工作,所以问题似乎在第一行。奇怪的是,在 NSManagedObject 的主实体的子类中,我有这样的行:

float total = [[self valueForKeyPath: @"child.@sum.amount"] floatValue];

并且这总是返回正确的金额。我不明白有什么区别。其他人可以吗?

最佳答案

您确定在调用您的方法时已设置 master 吗?此外,awakeFromInsert 文档指示您必须首先调用 [super awakeFromInsert]

关于objective-c - 核心数据 valueForKeyPath 返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8370608/

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