Xcode Swift 3 数据不会发布到 Firebase



由于某种原因,此代码未发布到 Firebase。我已经尝试了几种变体,但没有发布任何内容。

每当我运行此代码时,控制台中的输出都是,

2017-02-07 11:42:14.378 需要吗?[3394] [火力库/数据库][I-RDB03812] setValue: 或 removeValue: at /movies/-KcP5FyUnpM9drNz3vsd failed: permission_denied.

数据服务类:

import Foundation
import Firebase
let URL_BASE = FIRDatabase.database().reference()
class DataSevice {
    static let ds = DataSevice()
    private var _REF_BASE = URL_BASE
    private var _REF_POSTS = URL_BASE.child("movies")
    var REF_BASE: FIRDatabaseReference{
        return _REF_BASE
    }
    var REF_POSTS: FIRDatabaseReference{
        return _REF_POSTS
    }
}

我有代码要发布的部分:

@IBAction func postBtn(_ sender: Any) {
    if(self.caption.text != ""){
        vars.caption = self.caption.text
    }
    if let img = imgView.image, imageSelected {
        let urlStr = "https://post.imageshack.us/upload_api.php"
        let url = URL(string: urlStr)!
        let imgData = UIImageJPEGRepresentation(img, 0.2)!
        let keyData = "AEHKLRSU485b1b4e7ca86c9fdcede4064b55d66b".data(using: .utf8)!  // key removed for sake of privacy
        let keyJSON = "json".data(using: .utf8)!
        Alamofire.upload(multipartFormData: { multipartFormData in
            multipartFormData.append(imgData, withName: "fileupload", fileName:"image", mimeType: "image/jpg")
            multipartFormData.append(keyData, withName: "key")
            multipartFormData.append(keyJSON, withName: "format")
        }, to: url, encodingCompletion: { encodingResult in
            switch encodingResult {
            case .success(let upload, _, _):
                upload.responseJSON { response in
                    if let info = response.result.value as? [String: AnyObject],
                        let links = info["links"] as? [String: AnyObject],
                        let imgLink = links["image_link"] as? String {
                        self.postToFirebase(imgLink)
                    }
                }
            case.failure(_): break
            }
        })
    }
    else{
        self.makeAlert("Missing Fields", msg: "In order to post you must include a Picture and a Caption")
    }
}
func postToFirebase(_ imgUrl: String?){
    if let description = self.caption.text , description != "" {
        if let title = self.movieTitle.text , title != ""{
            let post: Dictionary<String, AnyObject>  = [
                "title": title as AnyObject,
                "caption": description as AnyObject,
                "category": vars.category as AnyObject,
                "imageURL": imgUrl! as AnyObject
            ]
            print(post)
            //over here add this post to the users post array
            var fpost = DataSevice.ds.REF_BASE.child("movies").childByAutoId()
            fpost.setValue(post)
            self.movieTitle.text = ""
            self.caption.text = ""
            self.imgView.image = UIImage(named: "")
            self.imageSelected = false
        }
    }
    else{
        print("didnt work")
    }
}

postToFirebase方法是完成实际过帐的位置。谢谢。

你的代码是正确的。问题出在Firebase数据库权限上。您的数据库不允许发布。转到 Firebase 控制台。在左侧,选择"数据库"按钮。在右侧,您将看到数据,规则,使用情况,备份。选择"规则",并将值更改为:

{
  "rules": {
    ".read": "true",
    ".write": "true"
  }
}

最新更新