无法在名称处存储 _SwiftValue 类型的对象。只能存储 NSNumber、NSString、NSDictionary 和 NSArray 类型的对象。



所有,我有一些麻烦与Firebase驱动的应用程序,我正在工作。这个问题是在我的xCode升级到版本8之后出现的。我对此做了一些广泛的研究,并通过一些Stackoverflow主题试图解决这个问题,因为它似乎是一个非常常见的错误。我想可能是我错过了一些非常明显的东西,请原谅我的愚蠢。

这是我收到的错误。

不能在name存储_SwiftValue类型的对象。只能存储NSNumber, NSString, NSDictionary和NSArray类型的对象。'

我认为这是我的代码段。

    func saveUser(withUID uid: String, username: String, value: [String:   String?], completion: @escaping (Error?) -> Void) {
         let values = ["/users/(uid)": value, "/usernames/(username)": uid] as [String: Any]
         root.updateChildValues(values) { (error, _) in
            completion(error)
        }
    }
    func updateUser(_ newValue: [String: String?]) {
        currentUser.updateChildValues(newValue)
    }
    // MARK: - Posts
    func createPost(_ _post: [String: String]) {
        let userUID = Auth.shared.currentUserUID
        let key = posts.childByAutoId().key
        var post = _post
        post["userUID"] = userUID
        // get current user's username
        currentUser.child("username").observeSingleEvent(of: .value, with: {     snapshot in
            if let username = snapshot.value as? String {
                post["username"] = username
                let values = [
                    "/posts/(key)": post,
                    "/user-posts/(userUID)/(key)": post
                ]
                self.root.updateChildValues(values)
            }
        })
    }

我在我的代码中也得到了同样的错误,只是弄清楚了。确保values[String : String]类型而不是[String : String?]

最新更新