1

複数の画像をモデルにロードしたいと思います。これを loadImage() 関数と inout パラメータで解決しようとしています。しかし、何らかの理由で、イメージ var は常に空です。画像が表示されません。

ここで何が問題なのですか?

   public var image: UIImage = UIImage()

   // Somewhere in the init function 
   self.loadImage("http://www.domain.com/cats.img", targetImage: &self.image)

   func loadImage(url:String, inout targetImage:UIImage) {
        dispatch_group_enter(self.dispatch_group);

        println("Start loading image \(url)")

        var request:Alamofire.Request = Alamofire.request(.GET, url).responseImage() {
            (request, _, image, error) in
            if error == nil && image != nil {
                println("imageRequestSuccess")

                // Save the image to the model property
                targetImage = image!

                // Dispatch if success
                dispatch_group_leave(self.dispatch_group)
            } else {
                println("imageRequestFailure")

                // Dispatch also to handle failure
                dispatch_group_leave(self.dispatch_group)
            }
        }
    }
4

1 に答える 1

0

クロージャーの使用はうまく機能します...しかし見苦しく見えます

self.loadImage(self.image_url!, onSuccess: { s1 in return self.image = s1 })



    func loadImage(url:String, onSuccess: (s1:UIImage) -> () ) {
        dispatch_group_enter(self.dispatch_group);

        println("Start loading image \(url)")

        var request:Alamofire.Request = Alamofire.request(.GET, url).responseImage() {
            (request, _, image, error) in
            if error == nil && image != nil {
                println("imageRequestSuccess")

                onSuccess(s1:image!)

                // Dispatch if success
                dispatch_group_leave(self.dispatch_group)
            } else {
                println("imageRequestFailure")

                // Dispatch also to handle failure
                dispatch_group_leave(self.dispatch_group)
            }
        }
    }
于 2015-01-05T10:49:16.723 に答える