我似乎无法解决的非常初学者级的问题:

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

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

ios - 在核心数据模型中存储(很长很长)-LMLPHP

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

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

这就是我有点卡住的地方。我乘以1000,最后得到的是我很喜欢的东西,然后将其强制转换为(长长),但是然后需要从CoreData的可能性列表中选择一种合适的类型,该类型具有存储(长长)精度或类似的东西。


我应该在CoreData中选择哪种数据类型?
将NSDate乘以整数会返回什么? (可能带有比Apple文档更有用的参考?)

最佳答案

long long与Integer 64相同。

不能将NSDate乘以整数。 NSDate是时间瞬间。可以问它距几个参考日期有多少秒(其中一个是unix纪元),但是NSDate本身不是那样。这是时间的瞬间。 (内部存储为自2001年1月1日“参考日期” 00:00:00 UTC以来的Double秒数,但这是实现的详细信息,您不必担心。)

但是,通常,您应该将日期作为日期存储在Core Data中。不要转换为数字或以毫秒为单位思考。这是一个臭虫坑。如果您有日期,请在Core Data中选择“日期”类型进行存储。

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

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

10-14 20:32