2016-09-18 51 views
0

我使用的是MKMapSnapShotter,但是當我在return finalImage上設置斷點時,我可以看到該值僅爲空ObjectiveC.NSObject,而不是UIImage爲什麼我的UIImage在Swift中沒有正確設置?

func getIMG() -> UIImage{ 
     var finalImage = UIImage(); 
     let imageOptions = MKMapSnapshotOptions(); 
     imageOptions.region = mapView.region; 
     imageOptions.size = mapView.frame.size; 
     imageOptions.showsBuildings = true; 

     let imgMap = MKMapSnapshotter(options: imageOptions); 
     imgMap.start(completionHandler: { (imageObj: MKMapSnapshot?, Error) -> Void in 
      if(Error != nil){ 
       print("\(Error)"); 
      }else{ 
       finalImage = imageObj!.image; 
      } 

     }); 

     return finalImage; 

    } 

我的地圖加載正確等,所以問題必須在這裏。此外,什麼是用於測試目的的最快和最簡單的方式來查看圖像? (我不想爲了看它生成的圖像而設計一個imageView等等)。

乾杯

UPDATE:

func getIMG(completion: @escaping (UIImage)->()){ 
     var finalImage = UIImage(); 
     let imageOptions = MKMapSnapshotOptions(); 
     imageOptions.region = mapView.region; 
     imageOptions.size = mapView.frame.size; 
     imageOptions.showsBuildings = true; 

     let imgMap = MKMapSnapshotter(options: imageOptions); 
     imgMap.start(completionHandler: { (imageObj: MKMapSnapshot?, Error) -> Void in 
      if(Error != nil){ 
       print("\(Error)"); 
      }else{ 
       finalImage = imageObj!.image; 
      } 
      completion(finalImage); 

     }); 

    } 

-

map.getMapAsIMG{ (image) in 
     print(image); 
    }; 

注:編譯器需要我用@escape ...

回答

3

不能從使用功能恢復閉包,所以你也可以在你的函數中使用閉包。

func getIMG(completion: (UIImage) ->()) { 

    var finalImage = UIImage(); 
    let imageOptions = MKMapSnapshotOptions(); 
    imageOptions.region = mapView.region; 
    imageOptions.size = mapView.frame.size; 
    imageOptions.showsBuildings = true; 

    let imgMap = MKMapSnapshotter(options: imageOptions); 
    imgMap.start(completionHandler: { (imageObj: MKMapSnapshot?, error) -> Void in 
     if(error != nil){ 
      print("\(Error)"); 
     }else{ 
      finalImage = imageObj!.image; 
     } 
     completion(finalImage) 
    }); 
} 

現在就像這樣調用這個函數。

self.getIMG { (image) in 
    //Access the image object 
} 
+0

這樣做很有意義,我現在要做實驗,並且會回覆給您。還歡呼 –

+0

,即使當我在'finalImage = imageObj!.image;'上放置了一個斷點時,該值仍然以空的NSObject形式出現......當然,這意味着還有另一個無法解決的問題? –

+0

你嘗試關閉嗎? –

相關問題