2016-07-30 1 views
0

テーブルビューでセルを選択し、値をコントローラーに渡して、次のコードを使用してParse(Herokuで実行中)の行を更新できるようにします。Swiftを使用してParseで画像ファイルの列を更新できません

問題私は直面しています - 「タイトル」列は更新されますが、画像ファイルの列は選択された新しい画像で更新されません。新しいイメージが実際にコードに渡されていることがわかります。

同期呼び出しを使用しています。これは、レコードが保存されない限り、ユーザーが先に移動しないようにするためです。

何が間違っている可能性がありますか?新しいオブジェクトを保存する同じコードが正常に動作します。

おかげ アシシュ

   let query = PFQuery(className:"class") 
       query.whereKey("objectId", containsString: passedObject.objectId) 

       do { 

        let results = try query.findObjects() 

        if results.count == 0 { 

         print("error") 

         success = false 

        } else { 
         //update 


         do { 

          let obj = results.first 

          obj!["title"] = Title.text! 

          let imageData = UIImageJPEGRepresentation(imageOutlet.image!,0.2) 
          let imageFile = PFFile(name: "image.png", data: imageData!) 


          //try imageFile?.save() // is this needed? 
          obj!["imagefile"] = imageFile 

          try obj!.save() 
          self.success = true 


         } catch let er as NSError { 

          print(" error while updating - \(er)") 
         } 

        } 
       } catch { 

        print("error while querying \(error)") 

        success = false 
       } 
+0

ファイルに対してsave()関数を実行して結果が得られるかどうか確認してください。また、サーバーへの同期呼び出しを実行していることに気付きました。これは、メインスレッドをスタックするものです。saveInBackgroundを呼び出してバックグラウンドスレッドでこれを実行できます。 –

+0

ファイル上でsave()を実行しましたが、仕事も。私は、私がsaveInBackgroundを使用する場合、スレッドが完了しないうちに保存する前に戻ってくるので、私が欲しがらないセグを使用しているので、意図的に同期コールを行っています。 – ashishn

+0

imageOutlet定義のコードを貼り付けてください。 –

答えて

1

は、私は私の側にいくつかのテストを実行し、このコードは私の作品:

Ayncバージョン

let query = PFQuery(className: "FileTest") 
    query.findObjectsInBackgroundWithBlock { 
     (objects: [PFObject]?, error: NSError?) -> Void in 

     let imageData = UIImageJPEGRepresentation(self.imageOutlet.image!, 0.2) 
     let fileToSave = PFFile(name: "myfile.png", data: imageData!) 

     let firstObj = objects?.first 
     firstObj!["fileToSave"] = fileToSave 
     firstObj!.saveInBackgroundWithBlock { (success: Bool, error: NSError?) -> Void in 
      print("Object has been saved.") 
     } 


    } 

Syncのバージョン

let query = PFQuery(className: "FileTest") 

    do { 
     let objects = try query.findObjects() 
     let firstObj = objects.first 

     let imageData = UIImageJPEGRepresentation(self.imageOutlet.image!, 0.2) 
     let fileToSave = PFFile(name: "myfile.png", data: imageData!) 
     firstObj!["fileToSave2"] = fileToSave 
     try firstObj!.save() 
     print("object saved") 


    } catch let er as NSError { 
     print("error") 
    } 
+0

新しいオブジェクトを作成しています。このオブジェクトIDの新しいファイルを保存してみてください。 – ashishn

+0

既存のオブジェクトの新しいファイルを保存しますか? –

+0

答えを更新しました。最初にすべてのオブジェクトを取得し、その結果の最初のオブジェクトのファイルを更新して保存します。期待どおりに動作します。 –

関連する問題