Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Firebase替换整个阵列返回;不支持的类型:“uuu SwiftValue”;_Arrays_Swift_Firebase - Fatal编程技术网

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
    }

您是否打算将整个文档替换为空文档?从问题中不清楚什么是“歌曲”——在第一个片段中,似乎歌曲是一个文档或集合,每首歌曲都存储为一个子值。但在第二个片段中,看起来“歌曲”是在一个数组中,而不是在一个集合或文档中。也许如果你能澄清这个问题并包含更完整的代码,我们可以提供一个答案。请回顾感谢您的跟进和发布您的解决方案。