在这里我似乎无法解决非常初学者的问题:
在Objective-C中,自1970年以来,我可以使用(long long)([[NSDate date] timeIntervalSince1970] * 1000.0)
(来自here)获得毫秒数。
我想存储在CoreData模型中,但是我唯一的选择是:
问题是,我什至不知道我要从什么转换 ,因为timeIntervalSince1970的签名是:(instancetype)dateWithTimeIntervalSince1970:(NSTimeInterval)secs;
从一个快速的Google那里,我发现(instancetype)
是我正在操作的实例(如果我理解正确的话),即NSDate
。如果这表示自1970年以来的秒数,则可以乘以1000以得到毫秒。为什么我可以将NSDate乘以(int)? docs中的任何内容都无法使我相信这是做事的正确方法。
这是我有点卡住的地方。我乘以1000,最后得到 something ,然后将其强制转换为(很长很长),但我很喜欢,但是随后需要从CoreData的可能性列表中选择一种具有精度的合适类型(长长)或等效值的存储。
答案 0 :(得分:1)
long long
与整数64相同。
您不能将NSDate
乘以整数。 NSDate
是时间的瞬间。可以问它距几个参考日期有多少秒(其中一个是unix纪元),但是NSDate
本身并不是问题。这是时间的瞬间。 (内部存储为自“参考日期” 2001年1月1日00:00:00 UTC以来的Double
秒数,但这是一个实现细节,您不必担心。)
不过,通常,您应该将日期作为日期存储在Core Data中。不要转换为数字或以毫秒为单位思考。这是一个臭虫坑。如果您有日期,请在Core Data中选择“日期”类型进行存储。
-dateWithTimeIntervalSince1970
returns an NSTimeInterval
,这是Double
的类型别名。我不确定您在哪里看到(instancetype)
作为返回值。正如您所说,那将是NSDate
,这没有道理。