【问题标题】:Saving data to Firebase Realtime Database - Swift İOS将数据保存到 Firebase 实时数据库 - Swift İOS
【发布时间】:2021-10-09 20:52:47
【问题描述】:

我正在尝试使用以下代码将字典保存到 Firebase 数据库。相当简单的代码,应该只写如下内容:

Genre
  fileName:
     user
  fileName2:
     user2
  fileName3:
     user3
  fileName4:
     user4

等等...所以它基本上是一个由用户值组成的文件名数组。但它一直给我一个错误,如下所示。

(setValue:) 路径中的对象中的无效键: 。键必须为非空且不能包含“/”“。” '#' '$' '[' 或 ']''

你可以看到我的代码如下: 我正在尝试将值设置为 [fileName: username] 这是一个字典数组,然后将它们设置在“流派”的子级下。为什么会发生此错误?我该如何解决?

谢谢。

public func insertPostsToDB(with fileName: String, user: String, genre: String, completion: @escaping (Bool) -> Void) {
        
        guard let username = UserDefaults.standard.string(forKey: "username") else {
            
            return
        }

        database.child("\(genre)").setValue([fileName : username]) 
}

【问题讨论】:

  • 从 .child 中删除 \ 并像 database.child("genre").setValue... 一样使用它。
  • 错误提示您的文件名或用户名为空。您是否已打印或使用调试器来确保它们具有值("" 除外)?
  • 我得到了文件名和流派的值
  • 值是文件名:1628150362.236193F37E7016-0F8B-4474-BAF2-AC9560F1624B_895_.mov,流派:摇滚

标签: ios swift firebase firebase-realtime-database


【解决方案1】:

听起来您的 genre 变量中有不允许的字符。我建议打印该值,并查看它是否包含错误消息中提到的字符之一。

如果是这样,如果不将那些不允许的字符编码为允许的字符,您将无法将流派用作键。

【讨论】:

  • 嗨弗兰克。我确实得到了“流派”的值,甚至是非可选的字符串。而且它不包含任何受限字符。仍然遇到同样的错误
  • 除了我得到的值是文件名:1628150362.236193F37E7016-0F8B-4474-BAF2-AC9560F1624B_895_.mov,类型:摇滚。我错过了什么
  • 我从来没有看到错误消息是徒劳的,因此我建议您进一步查看您的代码,确切地了解错误发生的位置以及您在其中使用的每个变量的值。
  • 谢谢弗兰克!问题是试图以包含“。”的名称文件名保存数据。 .删除文件名中的点后,它可以完美地保存到数据库。接受您的答案作为解决方案。祝你有美好的一天
猜你喜欢
  • 2021-10-07
  • 1970-01-01
  • 2020-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 2018-06-25
相关资源
最近更新 更多