我想将available带有renamed和参数的属性应用于符合 的unavailable属性,如下所示:structCodable
struct SampleData: Codable {
@available(*, unavailable, renamed: "newProperty")
let oldProperty: String
let newProperty: String
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试构建此代码时,出现如下编译错误:
注意:“oldProperty”已在此处明确标记为不可用
如果 astruct不符合Codable,则效果很好。
有谁知道如何解决这个问题?
如果无法解决此问题,请告诉我原因,我将不胜感激。
提前致谢。
这是因为综合Codable一致性也在尝试解码/编码oldProperty。它不能不这样做,因为所有存储的属性都必须初始化,即使它们不可用。
oldProperty如果您初始化为某个值,并添加一个CodingKey枚举来告诉自动合成的一致性仅编码/解码,它将起作用newProperty:
struct SampleData: Codable {
@available(*, unavailable, renamed: "newProperty")
let oldProperty: String = ""
let newProperty: String
enum CodingKeys: CodingKey {
case newProperty
}
}
Run Code Online (Sandbox Code Playgroud)
实际上,根据情况,您也许能够转换oldProperty为计算属性,在这种情况下您不需要编码键。
struct SampleData: Codable {
@available(*, unavailable, renamed: "newProperty")
var oldProperty: String { "" }
let newProperty: String
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
358 次 |
| 最近记录: |