swift - 在范围内找不到 'CodingKeys',不一致错误

标签 swift xcode codable grdb

我正在研究 GRDB 数据模型。我的问题可能的根源在于测试版: 版本 12.0 beta 2 (12A6163b)。

我在几个结构中出现间歇性错误。 Cannot find 'CodingKeys' 出现在一些结构定义的几行中。这发生在 CodingKeys 在指示行之前或之后的几行上被接受之后。请参阅下面的示例代码。

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

我的数据模型有 13 个表和结构定义。此错误在 Columns 枚举中的一两行中显示了六个结构定义。我找不到错误显示在哪些行上的任何共同点。

下面示例中的错误,uuidCommodity 是一个 UUID 类型变量,但我也看到了 Date、String 和 Int 类型的行上的错误。

还有其他人看到这个问题吗?有人有什么建议吗?我昨晚向 Apple Feedback 提交了这个问题,目前还没有答案,但现在是周末。

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
}

最佳答案

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

关于swift - 在范围内找不到 'CodingKeys',不一致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62970228/

相关文章:

ios - 自定义tableHeaderView隐藏单元格

iphone - 标签栏 Controller 和标签栏有什么区别?

Swift 4 解码简单的根级 json 值

ios - Swift 4 可解码 : The given data was not valid JSON

objective-c - 使用字典时,方法不能是 @objc 协议(protocol)的成员

swift - 获取CPU时钟时间AVAudioEngine

ios - 填充颜​​色时如何更改SKShapeNode的填充规则

swift - Apple 开发者 SwiftUI 教程的预览问题 - 与 UIKit 的框架集成接口(interface)

c++ - Xcode 中的 Objective-C++ 和 .cpp 文件

swift4 - 如何使用 Swift 4 编码键处理来自 json 响应的动态键