我有一个由sqllite数据库支持的coredata模型。我想用一些初始数据填充数据库。
到目前为止,我一直在使用Python来完成这项任务,并且一直运行良好。唯一不起作用的是插入日期。我理解coredata以epoch格式存储日期,所以我目前通过Python插入它们:
time.mktime(datetime(2012, 7, 1, 12, 30, 30).timetuple())
但是,这并没有给我通过coredata加载数据的正确日期。有关如何格式化日期的任何想法,以便通过coredata正确读取它?
*注意: 我意识到大多数人建议通过使用相同模型而不是使用Python脚本的小应用程序来实现这一点,但我发现Python语法更简洁,用于构造和插入大量对象。
E.g。 我可以调用插入这样的数据的方法:
insertData(con, 1, 1, 'Data 1', 'Description')
vs Objective-C及其冗长的方法调用:
[self insertdata withCon:con id: 1 i2:1 val:@"Data 1", Desc:@"Description"];
答案 0 :(得分:2)
核心数据似乎使用2001年1月1日,GMT作为参考日期(与NSDate
方法timeIntervalSinceReferenceDate
相同)而不是1970年,作为Python中的mktime
函数,所以你必须根据它来计算你的时间戳。
当然,这完全没有记录,我同意dpjanes' answer这种方法通常是一个坏主意。
如果你真的想要这样做,你可以在Python中构建一个合适的时间戳,如下所示:
import time
from datetime import datetime
ref = time.mktime(datetime(2001, 1, 1, 0, 0, 0).timetuple())
now = time.time() - ref
答案 1 :(得分:1)
因为Core Data不是sqlite的ORM,所以它不能 读取任意sqlite架构。相反,你不应该依赖于存在 能够使用其他sqlite工具读取Core Data的sqlite数据存储; 架构是一个可能会改变的实现细节。