在范围内找不到“ CodingKeys”,不一致错误

时间:2020-07-18 15:19:11

标签: swift xcode codable grdb

我正在研究GRDB数据模型。我的问题可能可能是通过测试Beta产生的: 版本12.0 beta 2(12A6163b)。

我在几种结构中出现间歇性错误。 Cannot find 'CodingKeys'在一些结构定义中以几行显示。在指定的行之前或之后的几行中接受CodingKeys后,就会发生这种情况。参见下面的示例代码。

我正在使用基于GRDB documentation的枚举。

我的数据模型有13个表和结构定义。该错误在Columns枚举的一两行中显示了六个结构定义。我找不到错误所在行的任何公分母。

以下示例中的错误uuidCommodity是一个UUID类型变量,但我也看到了日期,字符串和整数类型的行上的错误。

还有其他人看到此问题吗?有人有什么建议吗?我昨晚向Apple反馈中心提交了此文件,目前还没有答案,但这是周末。

import Foundation
import GRDB

struct Accounts: Codable, Identifiable {

    var id: UUID {
        return uuidKey
    }

    // MARK: - GrandSync Properties
    var uuidKey: UUID
    var uuidUser: UUID
    var uuidFamily: UUID
    var dateCreated: Date
    var dateModified: Date? // nil if never saved
    var dateArchived: Date? // nil if never archived
    var datePost: Date? // nil if not synced to Postgres
    var myName: String

    // MARK: - Subclass Properties
    var limitCents: Int
    var uuidCommodity: UUID
    var uuidParent: UUID?


}

// MARK: - SQL Generation
extension Accounts: TableRecord, FetchableRecord, PersistableRecord {

    static let databaseTableName = "accounts"

    /// The table columns
    enum Columns {
        static let uuidKey = Column(CodingKeys.uuidKey)
        static let uuidUser = Column(CodingKeys.uuidUser)
        static let uuidFamily = Column(CodingKeys.uuidFamily)
        static let dateCreated = Column(CodingKeys.dateCreated)
        static let dateModified = Column(CodingKeys.dateModified)
        static let dateArchived = Column(CodingKeys.dateArchived)
        static let datePost = Column(CodingKeys.datePost)
        static let myName = Column(CodingKeys.myName)
        static let limitCents = Column(CodingKeys.limitCents)
        static let uuidCommodity = Column(CodingKeys.uuidCommodity)  // Error shows up on this line
        static let uuidParent = Column(CodingKeys.uuidParent)
    }
...

编辑:添加一个显式的CodingKeys枚举可以使错误消失,但是我仍然不知道为什么最初的错误在那里。

enum CodingKeys: String, CodingKey {
    case uuidKey, uuidUser, uuidFamily, dateCreated, dateModified, dateArchived, datePost, myName, abrv, iCommodityType
}

1 个答案:

答案 0 :(得分:3)

这是Xcode 12 Beta错误。 https://github.com/groue/GRDB.swift/issues/804在此处详细说明了解决方法。只需在Accounts.之前添加CodingKeys