/ / получи json на масив от обект в бърз - json, бърз, кодиращ

получавам json на набор от обект в бърз - json, бърз, codable

Бих искал да спечеля бързината на набор от обекти

class action {
var ts: Int;
var winner: Int;
var meta: [Int: String];

init(ts : Int, winner: Int, meta: [Int: String]) {
self.ts = ts;
self.winner = winner;
self.meta = meta;
}
}

var actions:[action] = []

let thisAction = action(ts: 123, winner: 1, meta: [:]);
actions.append(thisAction);

let jsonEncoder = JSONEncoder();
let jsonData = try jsonEncoder.encode(actions);

Но имам следната грешка:

Фатална грешка: Array <action> не съответства на Encodable, защото действието не съответства на Encodable .: file /BuildRoot/Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-900.0.74.1/src/swift/stdlib/public/ ядро / Codable.swift, линия 3962

Отговори:

0 за отговор № 1

Съобщението за грешка е доста ясно, трябва да наследявате Codable на твоят Action клас.

class Action: Codable {
var ts: Int
var winner: Int
var meta: [Int: String]

init(ts : Int, winner: Int, meta: [Int: String]) {
self.ts = ts
self.winner = winner
self.meta = meta
}
}

Съвет 1: Използвайте капитал A на твоят Action клас

Съвет 2: Не използвайте ;, няма нужда от това в Суифт

Съвет 3: използвайте do-try-catch:

do {
let jsonData = try JSONEncoder().encode(actions)
print(jsonData)
} catch let error {
print(error)
}