我使用核心数据来保存我的数据,并且有一个名为" timestamp"被定义为" NSDate"。我使用我的帮助器类通过以下代码从核心数据中获取数据对象:
- (id)getMaxValue:(NSString *)entityName forProperty:(NSString *)propertyName {
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:entityName];
fetchRequest.fetchLimit = 1;
fetchRequest.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:propertyName ascending:NO]];
NSError *error = nil;
id maxValue = [self.context executeFetchRequest:fetchRequest error:&error].firstObject;
if ([maxValue count]) {
[self.context rollback];
return [maxValue valueForKey:propertyName];
}
else {
return nil;
}
}
在我的控制器中,我使用以下代码检查是否有返回的结果,我得到它的时间戳:
id maxGroupsDate = [self.generalModel getMaxValue:@"MyEntityName" forProperty:@"timestamp"];
if (maxGroupsDate != nil) {
maxGroupsDate = (NSDate*) maxGroupsDate;
NSTimeInterval maxGroupsTimestamp = maxGroupsDate.timeIntervalSince1970;
}
但是它会导致这样的错误:
Property 'timeIntervalSince1970' not found on object of type '__strong id'
如何解决这个问题?
答案 0 :(得分:0)
此声明无效:
maxGroupsDate = (NSDate*) maxGroupsDate;
相反,引入指定类型的新变量,并在转换之前检查值为NSDate
:
if ([maxGroupsDate isKindOfClass:[NSDate class]]) {
NSDate *date = (NSDate *)maxGroupsDate;
NSTimeInterval maxGroupsTimestamp = date.timeIntervalSince1970;
}
最后一句话也没有太大作用,但我猜你只是为了说明而添加了。