Бих искал да спечеля бързината на набор от обекти
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)
}