我有一个例程,用于比较网站上最新更新记录的时间与iPad上CoreData
保存的相同记录。此处, obsLastUpdated 是CoreData中设置为Date
类型的字段。
将数据从CoreData
读入NSDate:
NSDate *iPadDate = [[self.recordDetails objectAtIndex:0] obsLastUpdated]; //gets the date from CoreData
我收到了这个警告:
使用表达式初始化'NSDate *'的指针类型不兼容 类型'NSString *'
然而,这只是一个警告,一切仍然有效。如果我尝试将此NSDate
iPadDate与另一个NSDate
进行比较,则没有错误,一切正常。但我想深究警告。
如果我从CoreData
读取字符串并转换为NSDate
,我似乎无法正确格式化并且应用程序崩溃。我试过了:
NSString *iPadDateStr = [[self.recordDetails objectAtIndex:0] obsLastUpdated];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
NSDate *iPadDate = [dateFormat dateFromString: iPadDateStr];
我意识到CoreData
不会将日期存储为NSDate
,但是它是如何存储的,以及如何绕过警告?
CoreData实体:
更新:
错误发生在将obsLastUpdated声明为NSString的类中。改为NSDate,一切都很好。
答案 0 :(得分:0)
只需将其定义为NSDate
,而不是NSString
:
MyEntity *entity = [self.recordDetails first];
NSDate *iPadDate = entity.obsLastUpdated;