0

我有一个由 sqllite 数据库支持的 coredata 模型。我想用一些初始数据填充数据库。

到目前为止,我一直在使用 Python 来执行此操作,并且运行良好。唯一不起作用的是插入日期。我了解 coredata 以纪元格式存储日期,所以我目前通过 Python 插入它们,如下所示:

time.mktime(datetime(2012, 7, 1, 12, 30, 30).timetuple())

但是,当通过 coredata 加载数据时,这并没有给我正确的日期。关于如何格式化日期以便通过 coredata 正确读取日期的任何想法?

*注意:我意识到大多数人建议通过使用相同模型的小应用程序而不是使用 Python 脚本来执行此操作,但我发现 Python 语法对于构造和插入大量对象更简洁。

例如 ,我可以调用插入数据的方法,如下所示:

insertData(con, 1, 1, 'Data 1', 'Description')

与具有冗长方法调用的 Objective-C 对比:

[self insertdata withCon:con id: 1 i2:1 val:@"Data 1", Desc:@"Description"];
4

2 回答 2

2

Core Data 似乎使用 2001 年 1 月 1 日,GMT 作为参考日期(与NSDate方法相同timeIntervalSinceReferenceDate)而不是 1970,作为mktimePython 中的函数,因此您必须根据它计算时间戳。

当然,这完全没有记录,我同意dpjanes 的回答,即这种方法通常是一个坏主意。

如果你真的想这样做,你可以像这样在 Python 中构造一个适当的时间戳:

import time
from datetime import datetime

ref = time.mktime(datetime(2001, 1, 1, 0, 0, 0).timetuple())
now = time.time() - ref
于 2012-07-08T11:24:16.070 回答
1

唉,不要这样做。我一直使用 Python 来填充 sqlite 数据库并使用 Objective-C 和 Java 读取它们,但 CoreData 是使用sqlite 的东西,但它的使用方式可能会随着时间而改变。

因为 Core Data 不打算成为 sqlite 的 ORM,所以它不能读取任意 sqlite 模式。相反,您不应该依赖于能够使用其他 sqlite 工具读取 Core Data 的 sqlite 数据存储;架构是一个可能会改变的实现细节。

来自https://stackoverflow.com/a/524301/96338

于 2012-07-08T11:05:54.590 回答