2016-07-12 9 views
0

HerokuでホストされているParse Serverインスタンスに接続されたMongoDBデータベースからPFFileを取得しようとしています。mongoDBにPFFileをロードして保存します

私は(ファイル< 10メガバイト)のファイルを保存した:

let elements = PFQuery(className: "Posts") 
elements.findObjectsInBackgroundWithBlock ({ (objects:[PFObject]?, error:NSError?) -> Void in 
      if error == nil 
      { 


       for object in objects! 
       { 
        //add found data to arrays (holders) 

       let imagesQuery = object.valueForKey("picImage") as! PFFile 
       picArray.append(imagesQuery) 


       } 


      } 

      else 
      { 
       print((error?.localizedDescription)! + "load post") 
      } 

}) 

問題はここにある:

picArray[i].getDataInBackgroundWithBlock { (data:NSData?, error:NSError?) -> Void in 



      if error == nil 
      { 

       picImg.image = UIImage(data: data!) 
      } 
      else 
      { 

       print((error?.localizedDescription)!) 
      } 
     } 

ので

var post = PFObject(className: "Posts") 
let imageData = UIImageJPEGRepresentation(UIImage(named: "post_two")!, 0.5) 

post["picImage"] = PFFile(name: "post_two.jpg", data: imageData!) 
post["username"] = "example" 
post["title"] = "welcome" 
post["info"] = "Thanks" 

post.saveInBackgroundWithBlock { (success:Bool?, error:NSError?) in 
       if (success != nil && success == true) 
       { 
        print("post registred") 
       } 
       else{ 
        print(error!.localizedDescription) 
       } 

      } 

と私はポストをロードエラー:ネットワーク接続に失敗しました。 13.835050秒間スリープ状態にした後、試行を4回行います。 [エラー]:サポートされていないURL(コード:100、バージョン:1.12.0)サポートされていないURL DEBUGで

getDataInBackgroundWithBlock内のデータはnilです。私は問題がファイルの格納、ロード、またはApp Transport Securityの設定であるかどうかわかりません(いくつかのポストでは、例外ドメインを含めるように提案されています。

おかげでたくさん、私は

解析サーバファイル上で

答えて

0

は、次のように保存されている解決策を見つけるためにどこか分からない: [SERVER_URL] /ファイル/ [APP_ID]/[YOUR_FILE]

パース "サポートされていないURL"はNSURLErrorUnsupportedURLに対応します。 あなたのURLには、エスケープする必要のある文字がいくつか含まれていると思います。 [APP_ID]または[YOUR_FILE]にURLでサポートされていない文字を含めることができます。

一般に、RFC 3986で定義されたURI。

print(picArray[i].url) 

そして、あなたは、WebブラウザにこのURLを貼り付けた場合、それはあなたのためのパーセントエスケープします: あなたはここにあなたが次の方法を使用してURLを取得することができますunreserved characters

を見ることができます。

Herokuの設定変数でAPP_IDを変更してみてください。 そして古いスウィフトバージョンでAppDelegate.swift

に追加します。私は私の答えを期待し、私の下手な英語、 のため申し訳ありません

let configuration = ParseClientConfiguration { 
    $0.applicationId = "YOUR NEW APP ID" 
    $0.server = "http://example.com/parse" 
} 
Parse.initialize(with: configuration) 

スウィフト3

let configuration = ParseClientConfiguration { 
     $0.applicationId = "YOUR NEW APP ID" 
     $0.server = "http://example.com/parse" 
    } 
    Parse.initializeWithConfiguration(configuration) 

役に立った

+0

ありがとう、私はあなたを試して更新:) – user2224174

+0

あなたの返信に感謝します:) –

関連する問題