试图使这个 class 可编码和可解码
Trying to make this class codable and decodable
试图使这个class可编码和可解码
import Foundation
class Attribute : Decodable {
struct Att: Decodable {
var number: Int16
var label: String
var comments: String
// Everything from here on is generated for you by the compiler
init(from decoder: Decoder) throws {
let keyedContainer = try decoder.container(keyedBy: CodingKeys.self)
number = try keyedContainer.decode(Int16.self, forKey: .number)
label = try keyedContainer.decode(String.self, forKey: .label)
comments = try keyedContainer.decode(String.self, forKey: .comments)
}
enum CodingKeys: String, CodingKey {
case number
case label
case comments
}
}
}
extension Attribute: Encodable {
public func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self)
try container.encode(number, forKey: .number)
try container.encode(label, forKey: .label)
try container.encode(comments, forKey: .comments)
}
}
我在这些行上有错误
try container.encode(number, forKey: .number)
try container.encode(label, forKey: .label)
try container.encode(comments, forKey: .comments)
随留言
Use of unresolved identifier 'number'
Use of unresolved identifier 'label'
Use of unresolved identifier 'comments'
我该如何解决?
为什么你有一个空的 class
,里面有一个嵌套的 struct
?错误来自于这些属性是在 Att
而不是 Attribute
上定义的,因此您需要在扩展 Att
时对它们进行编码以符合 Encodable
.
顺便说一句,你没有任何特殊的 encoding/decoding,所以你不需要手动声明 encoder/decoder 函数,编译器可以为你合成它们。
class Attribute: Codable {
struct Att: Codable {
var number: Int16
var label: String
var comments: String
}
}
我可能遗漏了一些东西,但以下应该可以工作,或者至少可以编译:
class Attribute : Decodable {
var number: Int16
var label: String
var comments: String
// Everything from here on is generated for you by the compiler
required init(from decoder: Decoder) throws {
试图使这个class可编码和可解码
import Foundation
class Attribute : Decodable {
struct Att: Decodable {
var number: Int16
var label: String
var comments: String
// Everything from here on is generated for you by the compiler
init(from decoder: Decoder) throws {
let keyedContainer = try decoder.container(keyedBy: CodingKeys.self)
number = try keyedContainer.decode(Int16.self, forKey: .number)
label = try keyedContainer.decode(String.self, forKey: .label)
comments = try keyedContainer.decode(String.self, forKey: .comments)
}
enum CodingKeys: String, CodingKey {
case number
case label
case comments
}
}
}
extension Attribute: Encodable {
public func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self)
try container.encode(number, forKey: .number)
try container.encode(label, forKey: .label)
try container.encode(comments, forKey: .comments)
}
}
我在这些行上有错误
try container.encode(number, forKey: .number)
try container.encode(label, forKey: .label)
try container.encode(comments, forKey: .comments)
随留言
Use of unresolved identifier 'number'
Use of unresolved identifier 'label'
Use of unresolved identifier 'comments'
我该如何解决?
为什么你有一个空的 class
,里面有一个嵌套的 struct
?错误来自于这些属性是在 Att
而不是 Attribute
上定义的,因此您需要在扩展 Att
时对它们进行编码以符合 Encodable
.
顺便说一句,你没有任何特殊的 encoding/decoding,所以你不需要手动声明 encoder/decoder 函数,编译器可以为你合成它们。
class Attribute: Codable {
struct Att: Codable {
var number: Int16
var label: String
var comments: String
}
}
我可能遗漏了一些东西,但以下应该可以工作,或者至少可以编译:
class Attribute : Decodable {
var number: Int16
var label: String
var comments: String
// Everything from here on is generated for you by the compiler
required init(from decoder: Decoder) throws {