我有一个核心数据,我有一个名为time
的NSDate
类型的实体属性,其中包含在商店中添加的时间。
当我试图提取数据时,我需要通过增加时间来订购,我使用的是NSSortDescriptor
。我的问题是当我有两个或更多相同时间的条目时,例如:
time = "2015-12-15 12:48:08 +0000";
time = "2015-12-15 12:48:08 +0000";
time = "2015-12-15 12:48:09 +0000";
time = "2015-12-15 12:48:09 +0000";
这里的顺序将丢失,因为我在qazxsw poi中没有毫秒。
我该如何解决这个问题?
NSDate
编辑!宣言:
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"time"
ascending:YES];
[request setSortDescriptors:@[sortDescriptor]];
NSError *error;
NSArray *arr =[context executeFetchRequest:request error:&error];
初始化:
@property (nonatomic, retain) NSDate * time;
第二种类型的初始化是:
newContact.time = [NSDate date];
NSDate确实包含毫秒。
日期对象是不可变的,表示相对于绝对参考日期(2001年1月1日00:00:00 UTC)的不变时间间隔。
此参考日期的单位是NSDateFormatter *dateformatter = [[NSDateFormatter alloc] init];
[dateformatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];
[dateformatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSS"];
NSString *timeString = [dateformatter stringFromDate:[NSDate date]]
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSS"];
NSDate *sentTime = [dateFormatter dateFromString:timeString];
newContact.time = sentTime;
,它是一个NSTimeInterval
,小数部分包含毫秒数。
NSTimeInterval始终以秒为单位指定;它在10,000年的范围内产生亚毫秒精度。
NSDate是使用NSTimeInterval使用他指定的初始化程序double
创建的。如果我一个接一个地调用这个方法,会发生以下情况:
-initWithTimeIntervalSinceReferenceDate:(NSTimeInterval)seconds
现在,CoreData可以直接保存NSDate对象,我的问题是:
var interval = NSDate.timeIntervalSinceReferenceDate()
print("\(interval)")
interval = NSDate.timeIntervalSinceReferenceDate()
print("\(interval)")
// 471879256.255005
// 471879256.259943
属性,你可以确定描述符是使用它进行排序。我真的怀疑Core Data保存NSDate四舍五入的值。