【发布时间】:2018-09-06 05:46:01
【问题描述】:
我希望在这里能够理解这个错误,也许可以更广泛地理解可编码和可解码。 我的部分课程如下所示:
public var eventId: String?
public var eventName: String?
public var eventDescription: String?
public var location: CLLocation?
/// These properties will be encoded/decoded from JSON
private enum CodingKeys: String, CodingKey {
case eventId
case eventName
case eventDescription
case location
}
public required convenience init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
let eventId = try container.decode(String?.self, forKey: .eventId)
let eventName = try container.decode(String?.self, forKey: .eventName)
let location = try container.decode(CLLocation?.self, forKey: .location)
self.init(eventId: eventId, eventName: eventName, location:location)
}
这个类完美运行,直到我添加位置。当我这样做时,我得到两个错误:类型“CAEvent”不符合协议“Encodable”,并且在 fromDecoder 方法中“如果没有上下文类型,就无法解析对成员“位置”的引用”。 有人能解释一下这个问题吗?
【问题讨论】:
-
做一些事情以使其符合或有另一种方法来存储位置数据?
-
您可以将纬度和经度存储为数字。
-
你知道这是否是标准做法吗?
-
不标准的做法是想象您可以将 CLLocation 填充到 JSON 中。你到底想做什么?
-
@AlexKornhauser 感谢您提出问题。我还试图弥合 Firestore 的 GeoPoint 和 Swift 的 CLLocation 之间的差距。事实证明这是一个相当大的挑战。你最终能解决这个问题吗?