在范围内找不到 'CodingKeys',不一致错误
Cannot find 'CodingKeys' in scope, inconsistent error
我正在研究 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.
我正在研究 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.