Arrays Firebase替换整个阵列返回;不支持的类型:“uuu SwiftValue”;
我有一个文档,其中包含具有以下结构的数组:Arrays Firebase替换整个阵列返回;不支持的类型:“uuu SwiftValue”;,arrays,swift,firebase,Arrays,Swift,Firebase,我有一个文档,其中包含具有以下结构的数组: "songs": [ { "id": "asdasdasd", "votes": 1, "downVotedBy": [], "upVotedBy": ["user1"] } ] 当我尝试使用其他用户向上投票歌曲时,在将用户添加到“upVotedBy”数组、将一个用户添加到“投票”并根据投票对歌曲进行排序后
"songs": [
{ "id": "asdasdasd", "votes": 1, "downVotedBy": [], "upVotedBy": ["user1"] }
]
当我尝试使用其他用户向上投票歌曲时,在将用户添加到“upVotedBy”数组、将一个用户添加到“投票”并根据投票对歌曲进行排序后,我希望替换整个数组,因此我执行以下操作:
ref.updateData([ "songs": songs ])
其中songs是包含此自定义类元素的数组:
public struct SongModel: Codable {
var id: String
var votes: Int = 1
var upVotedBy: [String]
var downVotedBy: [String]
enum CodingKeys: String, CodingKey {
case id
case votes
case upVotedBy
case downVotedBy
}
}
但我得到了一个例外“Unsupported type:\uu SwiftValue”我的临时解决方案是将SongModel数组转换为字典数组:
private func convertSongToDic(songs: [SongModel]) -> [Any]{
var newSongs = [Any]()
for song in songs {
newSongs.append([
"id": song.id,
"votes": song.votes,
"upVotedBy": song.upVotedBy,
"downVotedBy": song.downVotedBy
])
}
return newSongs
}
您是否打算将整个文档替换为空文档?从问题中不清楚什么是“歌曲”——在第一个片段中,似乎歌曲是一个文档或集合,每首歌曲都存储为一个子值。但在第二个片段中,看起来“歌曲”是在一个数组中,而不是在一个集合或文档中。也许如果你能澄清这个问题并包含更完整的代码,我们可以提供一个答案。请回顾感谢您的跟进和发布您的解决方案。