我有一个Comment拥有父实体的CoreData 实体Measurement.
该Measurement实体具有measurementDate属性.
我的核心数据库中有200 Comment条记录,每条记录在measurementDate过去3年中都有不同的值.
我试图获取measurementDate任何两个给定日期之间的记录.
首先,我试过这个:
//now fetch a record between 12 and 11 months ago
NSDate *startDate = [AppGlobals dateByAddingMonths:[NSDate date] withMonths:-12];
NSDate *endDate = [AppGlobals dateByAddingMonths:startDate withMonths:1];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(measurementDate >= %@) AND (measurementDate <= %@)", startDate, endDate];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Comment" inManagedObjectContext:self.context]];
[request setPredicate:predicate];
NSError *error = nil;
NSArray *results = [self.context executeFetchRequest:request error:&error];
Run Code Online (Sandbox Code Playgroud)
但我得到0结果.
那么我尝试用更简单的东西替换我的谓词:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"measurementDate >= %@", startDate];
Run Code Online (Sandbox Code Playgroud)
这应该返回我的结果的大约三分之一.但实际上它会返回所有200个记录.
我已经注销了对象的日期,看起来日期被完全忽略了!
我究竟做错了什么???
它是否与父抽象实体有关Measurement,因为我是从Comment实体而不是Measurement实体获取的?是因为我在我的代码中使用"原始数据类型的标量属性"吗?
任何帮助非常感谢.
我假设问题是您将日期值分配给托管对象.如果measurementDate被定义为标量属性
@property (nonatomic) NSTimeInterval measurementDate;
Run Code Online (Sandbox Code Playgroud)
然后你给NSDate它分配一个
NSDate *theDate;
obj.measurementDate = [theDate timeIntervalSinceReferenceDate];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1749 次 |
| 最近记录: |