我希望将一行SQlite转换为JSON数组。
例:
{
"0": {
"room_id": "5034"
},
"1": {
"room_id": "5199"
},
"2": {
"room_id": "5156"
}
}
迅捷4代码:
typealias Rooms = [String: Room]
struct Room: Codable {
let roomID: String
enum CodingKeys: String, CodingKey {
case roomID = "room_id"
}
}
var rooms = [Rooms]()
for room in try (db?.prepare(isco_room_time))! {
let export: Room = Room(roomID: room[room_id])
rooms.append(export)
}
我的错误(在线房间.append):
无法将类型"ViewController.Room"的值转换为预期的参数类型"ViewController.Rooms"(也称为"字典")
你为什么需要这个?
typealias Rooms = [String: Room]
如果你想要一个可编码对象的数组,你不需要别名改变
var rooms = [Rooms]()
自
var rooms = [Room]()
会工作。
由于 room 是字典,因此不应使用 append
for room in try (db?.prepare(isco_room_time))! {
let export: Room = Room(roomID: room[room_id])
rooms[room_id] = export
}
你可以
试试
var counter = 0
var rooms = [String:Room]()
do {
guard let dbs = db else { return }
let res = try dbs.prepare(isco_room_time)
for room in res {
let export: Room = Room(roomID: room.id)
rooms["(counter)"] = export
counter += 1
}
}
catch {
print(error)
}