2015-09-28 100 views
0

我有點掙扎構建SWIFT調用此函數斯威夫特語法 - 封

func addressFromLocation(location:CLLocation!, completionClosure:((NSDictionary?)->())){ 

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), {() -> Void in 
     var geoCoder = CLGeocoder() 
     geoCoder.reverseGeocodeLocation(location, completionHandler: { (placeMarks, error) -> Void in 
      if let places = placeMarks { 
       var marks = places[0] as! CLPlacemark 
       completionClosure(marks.addressDictionary) 
      }else { 
       completionClosure(nil) 
      } 

     }) 
    }) 
} 

有人能幫忙嗎?

+0

,你可以給你想構建什麼一些更多的解釋。? – arthankamal

+0

@arthankamal我想調用這個函數,所以要根據SWIFT語法構建一個調用,我不知道該怎麼做。 – Vanya

+0

http://stackoverflow.com/a/27750189/1866077,希望這可以幫助 – arthankamal

回答

0

首先,你可以從completionClosure參數類型刪除不必要的括號:

func addressFromLocation(location: CLLocation!, completionClosure: NSDictionary? ->()){ 
    //... 
} 

你可以調用這個函數像這樣:

addressFromLocation(location, completionClosure: { 
    dict in 
    // your code 
}) 

或者更簡單,因爲如果閉包是函數最後一個參數那麼你可以使用尾部封閉語法:

addressFromLocation(location) { 
    dict in 
    // your code 
} 

如果你不需要指定參數dict那麼你可以通過編號引用參數:

addressFromLocation(location) { 
    print($0) 
} 
+0

是的,你對這些圓括號。謝謝你,工作正常。 – Vanya