我只是试图将这个Objective-C块转换为swift,但是似乎有一个问题,我无法解决。这些变量都不是可选的。

Objective-C-工作

[CLPlacemark hnk_placemarkFromGooglePlace:place
            apiKey:YOUR_API_KEY
            completion:^(CLPlacemark *placemark, NSString *addressString, NSError *error) {
        }];


迅速-提供错误

CLPlacemark.hnk_placemarkFromGooglePlace(placeAtIndexPath(indexPath),"YOUR_API_KEY",
completion:{ (placemark:CLPlacemark!, addressString: NSString!, error: NSError!) -> Void in

            })


错误信息:

Cannot invoke 'hnk_placemarkFromGooglePlace' with an argument list of type '(HNKGooglePlacesAutocompletePlace!, String, completion: (CLPlacemark!, NSString!, NSError!) -> Void)'


Swift方法签名

 CLPlacemark.hnk_placemarkFromGooglePlace(place:
 HNKGooglePlacesAutocompletePlace!, apiKey:String!, completion:
 ((CLPlacemark!, String!, NSError!) -> Void)

最佳答案

Swift在块中将NSString桥接到String。您仍在回调中使用NSString,但应使用String。

关于ios - 将Objective-C块转换为Swift,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31147241/

10-13 03:55