gpt4 book ai didi

ios - 核心数据 : filtering entries based on time component of NSDate

转载 作者:行者123 更新时间:2023-11-28 22:55:05 24 4
gpt4 key购买 nike

我有一个具有属性 time 的实体,它是 Date 类型。我只关心它的时间部分。在生成类文件时,我选择对原始数据类型使用标量属性。因此,NSTimeInterval 被用来代替 NSDate

要存储 time 属性,我必须在将其分配给实体之前使用 NSDateFormatter 解析字符串:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"H:mm"];

NSTimeInterval time = [[dateFormatter dateFromString:@"19:20"] timeIntervalSince1970];
entity.time = time;

当使用谓词获取记录时,我再次使用 NSDateFormatter 来“截断”日期组件:

NSDate *timeNow = [self.defaultDateFormatter dateFromString:
[self.defaultDateFormatter stringFromDate:[NSDate date]]];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"time >= %@", timeNow];
// build the rest of the NSFetchRequest...

问题是,所有记录都返回了:有些记录在 timeNow 之前有 time 属性,有些在之后。但是,当我使用 [NSDate compare:]timeNow 与返回记录的 time 属性进行比较时,它实际上返回了正确的结果!

哪里出了问题?

最佳答案

如果我理解得很好,你需要跟踪时间 H:mm。日、月、年没有意义。对吧?

如果你需要分钟分辨率(最大 1440),为什么不使用 int16_t 或者如果你需要第二分辨率(最大 86400),为什么不使用 int32_t,以及一些非常基本的方法将基本单位转换为最适合你需要的东西,比如 NSDateComponents用于 NSCalendar 计算? NSDate 和 NSTimeInterval 不太适合这项任务,是吗?

关于ios - 核心数据 : filtering entries based on time component of NSDate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10976734/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com