我尝试使用 SQLite.swift 的Codable功能插入一行,但收到以下错误消息:
Swift.EncodingError.Context(codingPath: [], debugDescription: "Top-level
MyEnum encoded as number JSON fragment.", underlyingError: nil))
Run Code Online (Sandbox Code Playgroud)
我的枚举扩展Int并且Codable:
enum MyEnum : Int, Codable {
case FIRSTVAL = 0, SECONDVAL = 1
}
Run Code Online (Sandbox Code Playgroud)
消耗它的类如下所示:
class MyClass : Codable {
static let tableRef = Table("MyTable")
static let idColumn = Expression<Int>("MyTableId");
static let nameColumn = Expression<String>("Name")
static let myEnumValColumn = Expression<Int>("MyEnumVal")
static func createTable(_ db : Connection) throws {
try db.run(tableRef.create(ifNotExists: true) { t in
t.column(idColumn, primaryKey: true) …Run Code Online (Sandbox Code Playgroud) 我有一个值的时间戳634876488000000000和预期的日期04th November 2012, 18:00:00.当我转换它时,年份3612而不是2012(日,月和时间都是正确的).
这是一个例子:
Console.WriteLine(DateTime.FromFileTimeUtc(634876488000000000).ToString());
Console.WriteLine(DateTime.FromFileTime(634876488000000000).ToString());
Run Code Online (Sandbox Code Playgroud)
并输出:
04/11/3612 18:00:00
04/11/3612 18:00:00
经过进一步研究,我发现如果我Get-Date 634876488000000000在Powershell中使用,我会得到正确的预期日期04 November 2012 18:00:00.
任何人都可以解释如何使用C#正确地将时间戳转换为.NET DateTime对象吗?