Ios 无法将布尔类型的值分配给类型字符串数据库表示形式

Ios 无法将布尔类型的值分配给类型字符串数据库表示形式,ios,swift,firebase,google-cloud-firestore,Ios,Swift,Firebase,Google Cloud Firestore,如何将非字符串类型的数据添加到DatabaseRepresentation。我尝试过任何对象,但不符合哈希协议 lastMessageRead是Bool类型,还是我只是将其存储为字符串 extension Channel: DatabaseRepresentation { var representation: [String : Any] { var rep = ["ownerName": ownerName] rep["ownerId"] = own

如何将非字符串类型的数据添加到DatabaseRepresentation。我尝试过任何对象,但不符合哈希协议

lastMessageRead是Bool类型,还是我只是将其存储为字符串

extension Channel: DatabaseRepresentation {

    var representation: [String : Any] {
        var rep = ["ownerName": ownerName]
        rep["ownerId"] = ownerId
        rep["participantName"] = participantName
        rep["participantId"] = participantId
        rep["lastMessage"] = lastMessage
        rep["lastMessageId"] = lastMessageId

        if let lastMessageRead = lastMessageRead {
            rep["lastMessageRead"] = lastMessageRead **Cannot assign Bool to String
        }

        if let id = id {
            rep["id"] = id
        }
        return rep
    }
}
您可以尝试以下方法:

var representation: [String : String]

rep["yourData"] = "\(your data)"
截止日期:

    let formatter = DateFormatter()
    formatter.dateStyle = DateFormatter.Style.medium
    formatter.timeStyle = DateFormatter.Style.none
    formatter.dateFormat = "dd.MM.yyyy"
    let text = formatter.string(from: yourDateValue)
    rep["yourDate"] = text
希望对您有所帮助……

您可以尝试以下方法:

var representation: [String : String]

rep["yourData"] = "\(your data)"
截止日期:

    let formatter = DateFormatter()
    formatter.dateStyle = DateFormatter.Style.medium
    formatter.timeStyle = DateFormatter.Style.none
    formatter.dateFormat = "dd.MM.yyyy"
    let text = formatter.string(from: yourDateValue)
    rep["yourDate"] = text

希望它能帮助…

rep
的类型推断为
[String:String]
字典

rep
声明为
[String:Any]
,然后可以添加
Any
值而无需转换

此外,无需可选地绑定这两个值。如果它们是
nil
则不添加任何内容

var representation: [String : Any] {
    var rep = [String : Any]()

    rep["ownerName"] = ownerName
    rep["ownerId"] = ownerId
    rep["participantName"] = participantName
    rep["participantId"] = participantId
    rep["lastMessage"] = lastMessage
    rep["lastMessageId"] = lastMessageId
    rep["lastMessageRead"] = lastMessageRead   
    rep["id"] = id
    return rep
}

rep
的类型被推断为
[String:String]
字典

rep
声明为
[String:Any]
,然后可以添加
Any
值而无需转换

此外,无需可选地绑定这两个值。如果它们是
nil
则不添加任何内容

var representation: [String : Any] {
    var rep = [String : Any]()

    rep["ownerName"] = ownerName
    rep["ownerId"] = ownerId
    rep["participantName"] = participantName
    rep["participantId"] = participantId
    rep["lastMessage"] = lastMessage
    rep["lastMessageId"] = lastMessageId
    rep["lastMessageRead"] = lastMessageRead   
    rep["id"] = id
    return rep
}

谢谢,这对Bool值很有效。我该如何确定日期值呢?谢谢,这对布尔值很有效。如何确定日期值?这个问题有点模糊,因为没有说明什么是
lastMessageRead
,这就是问题所在。目前提供的答案只是一个解决办法,并没有解决实际问题。i、 e.当你真的想要一个布尔值时,为什么还要努力将布尔值转换成字符串,这样你就可以测试真与假?这个问题有点模糊,因为没有迹象表明什么是
lastMessageRead
,这就是问题所在。目前提供的答案只是一个解决办法,并没有解决实际问题。i、 e.当你真的想要一个布尔时,为什么还要努力把布尔转换成一个字符串,这样你就可以测试真与假了?