【发布时间】:2011-12-03 20:09:09
【问题描述】:
我有一个核心数据项目,其中包含一种“主”实体,它包含一个年份值(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]];
}
当我运行它时,即使 master 的“year”属性的值为 2011,currentYear 总是最终为 0。我尝试设置“int currentYear = 2011”,然后代码按预期工作,所以问题出在似乎在第一行。奇怪的是,在主实体的 NSManagedObject 子类中,我有这样的行:
float total = [[self valueForKeyPath: @"child.@sum.amount"] floatValue];
这总是返回正确的数量。我看不出有什么区别。其他人可以吗?
【问题讨论】:
标签: objective-c cocoa core-data