gpt4 book ai didi

ios - 在 CoreData 模型中存储 (long long)

转载 作者:行者123 更新时间:2023-11-28 23:44:26 25 4
gpt4 key购买 nike

这里是非常初级的问题,我似乎无法解决:

在 Objective-C 中,我可以使用 (long long)([[NSDate date] timeIntervalSince1970] * 1000.0) (来自 here )获得自 1970 年以来的毫秒数。

我想存储在 CoreData 模型中,但我唯一的选择是:

enter image description here

问题是,我什至不知道我要从 转换什么,因为 timeIntervalSince1970 的签名是:(instancetype)dateWithTimeIntervalSince1970:(NSTimeInterval)secs;

通过快速 Google,我发现 (instancetype) 是我正在操作的实例(如果我理解正确的话),它是 NSDate。如果这表示自 1970 年以来的秒数,则乘以 1000 得到毫秒是有意义的。为什么我可以将 NSDate 乘以 (int)? docs 中没有任何内容让我相信这是做事的正确方法。

这就是我有点卡住的地方。我乘以 1000 并最终得到 something 然后我将其转换为 (long long),我对此很满意,但随后需要从 CoreData 的可能性列表中选择具有精度的合适类型存储(long long)或类似的东西。

  • 我应该在 CoreData 中选择什么数据类型?
  • 将一个 NSDate 乘以一个整数会得到什么结果? (可能有比 Apple 文档更有用的引用资料?)

最佳答案

long long 与 Integer 64 相同。

您根本不能将 NSDate 乘以整数。 NSDate 是一个瞬间。可以询问它从几个引用日期(其中一个是 unix 纪元)开始的瞬间是多少秒,但 NSDate 本身不是那个东西。这是时间的瞬间。 (在内部,它存储为自 2001 年 1 月 1 日“引用日期”00:00:00 UTC 以来的 Double 秒数,但这是一个实现细节,您不必担心。)

不过,作为一项规则,您应该将日期存储为 Core Data 中的日期。不要转换为数字或以毫秒为单位思考。这是一个bug坑。如果您有日期,请在 Core Data 中选择“日期”类型来存储它。

-dateWithTimeIntervalSince1970 returns an NSTimeInterval ,这是 Double 的类型别名。我不确定您在哪里看到 (instancetype) 作为返回值。正如您所说,那将是 NSDate,这是没有意义的。

关于ios - 在 CoreData 模型中存储 (long long),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52858854/

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