2017-02-07 5 views
0

По какой-то причине этот код не отправляется в Firebase. Я пробовал несколько вариантов, но ничего не публикует.Xcode Swift 3 data wont post to Firebase

Всякий раз, когда я запускаю этот код, выход в консоли,

2017-02-07 11: 42: 14,378 NeedAMovie [3394] [Firebase/База данных] [I-RDB03812] SetValue : или removeValue: at /movies/-KcP5FyUnpM9drNz3vsd не удалось: разрешено.

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 Отметьте это как принятый ответ. :) –

Смежные вопросы