2017-03-03 9 views
0

私は、複数のサイズの写真を撮り、より小さな写真に分割するモザイクアプリを持っています。写真のサイズによっては、写真のサイズが変わることがあります。今私はimageNameList2という名前のNSMutableArrayを持っています。これは、大きな画像から得られた小さな画像すべてを保持しています。この例では、この質問に簡単に答えるために画像アセットリストから画像を呼び出す例を示しました。ここでアレイの画像の保存と取り出しの処理

imageNameList(すべての小さい画像を保持しているNSMutableArrayは)私は何をしたいのですがpifflesとして順に、これらすべての画像を保存します続けるボタンまたは任意の他の形式を持っている

var imageNameList: [String] { 
    var imageNameList2:[String] = [] //[NSMutableArray]() 
    for i in 0...149 { 
     let imageName = String(format: "pic_%03d", Int(i)) 
     imageNameList2.append(imageName) 
    } 
    return imageNameList2 
} 

ですそれを最もよく解析し、検索と呼ばれる別のボタンを使用して、これらのすべての写真を解析して取得します。私は基本的にバックエンドプロセスのスピードアップに役立つパースフレームワークを利用するパースサーバーを持っています。あなたは毎回保存画像の数が違う場合、これをどのように保存して取得するのかを教えてください。NSMutableArray

+0

これまでに何を試みましたか?コードを表示できますか? – creeperspeak

+0

私はどこから始めるべきか分かりません。イメージのnsmutablearrayではなく普通のイメージを保存する方法を知っています – Useruuu

+0

私はimageNameListを保存しようとしています – Useruuu

答えて

0

私はこのようなことをしようとしていると思います。これは単なる例です。やるべきことがたくさんありますが、うまくいけば、これはあなたを始めるでしょう。私はこのコードを実行したりテストしたりしなかった。

画像はPFFilesという名前で保存し、ファイルごとに「タイル」PFObjectを作成します。次に、すべての 'タイル' PFObjectを画像PFObjectの 'タイル'キーに保存します。その後、必要なときに画像をobjectIdで呼び出す。

幸運。

let appleTiles = ["apple1, apple2, apple3"] 
let orangeTiles = ["orange1, orange2, orange3, orange4, orange5"] 

func usage() { 

    //dont literally run these synchronously like this 
    post(appleTiles) 
    post(orangeTiles) 
    download() 
} 

func post(_ tileNames: [String]) { 

    let image = PFObject(className: "Image") 

    let tilesPF = tileNames.map({ name in 
     let data = UIImagePNGRepresentation(UIImage(named: name))! 
     let file = PFFile(data: data) 

     let tile = PFObject(className: "Tile") 
     tile["tile"] = file 
    }) 

    image["tiles"] = tilesPF 

    image?.saveInBackground(block: { responseObject, error in 

     //you'll want to save the object ID of the PFObject if you want to retrieve a specific image later 
    }) 
} 

func download() { 

    let query = PFQuery(className: "image") 

    //add this if you have a specific image you want to get 
    query.whereKey("objectId", equalTo: "someObjectId") 

    query.findObjectsInBackground({ result, error in 

     //this is probably close to how you'd unwrap everything but again, I didn't test it so... 
     if let objects = result as? [PFObject], let first = objects.first, let image = first["image"] as? PFObject, let tiles = image["tiles"] as? [PFObject] { 

      tiles.forEach({ tile in 

       let file = tile["tile"] 

       //now you have an individual PFFile for a tile, do something with it 
      }) 
     } 
    }) 
} 
+0

私は試しましたが、スレッドブレークポイントがクラッシュします。 let data = UIImagePNGRepresentation(!UIImageとしてのタイル)! – Useruuu

+0

UIImagePNGRepresentation(タイル)でエラーが発生しました。 「タイプpffobjectをタイプuiimageに変換できません」 – Useruuu

+0

これをテストすることなくこのコードを入力するだけで、このコードを使用する方法を理解し、どのエラーメッセージが表示されているかを理解する必要があります。実際の画像に画像名の「タイル」を付ける行を追加するのを忘れてしまった。私は今、その行を追加します。 – Frankie

関連する問題