2017-02-07 7 views
0

何らかの理由で、このコードはFirebaseに投稿されていません。私はいくつかのバリエーションを試しましたが、何も投稿していません。私はこのコードを実行するたびに、コンソールで出力するXcode Swift 3のデータはFirebaseに投稿されていません

2017年2月7日11:42:14.378 NeedAMovie [3394] [Firebase /データベース] [I-RDB03812]のsetValue :またはremoveValue: /movies/-KcP5FyUnpM9drNz3vsdに失敗しました:permission_denied。

のDataServiceクラス:私は投稿するためのコードを持っている

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方法があります。ありがとう。

答えて

2

コードは正しいです。問題は、Firebaseデータベースのアクセス許可です。あなたのデータベースは投稿できません。 Firebaseコンソールに移動します。左側で、[データベース]ボタンを選択します。右側には、データ、ルール、使用状況、バックアップが表示されます。ルールを選択し、値を次のように変更します。

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

ありがとうございます! –

+0

こんにちは@ShaanLuthraこれを受け入れられた回答としてマークしてください。 :) –

関連する問題