使用闭包在swift中调用Objective-C函数

时间:2015-11-27 07:41:19

标签: ios objective-c swift

我正在使用CRM Mobile SDK访问iOS中的MS Dynamics CRM,它由Microsoft提供,位于Objective-C中。我想在Swift中使用这个sdk。我使用swiftify将示例Objective-C代码转换为Swift,但它给出了错误。

  

无法调用" loginWithEndpoint'使用类型'的参数列表(String,completion:(ADAuthenticationResult) - > Void)'

调用函数是

- (void)loginWithEndpoint:(NSString *)serverURL completion:(ADAuthenticationCallback)completion;

这样称呼

CRMClient.sharedClient().loginWithEndpoint(host, completion: {(result: ADAuthenticationResult) -> Void in
            if result.error {
                // TODO: Handle the error
            }
            else {
                // TODO: Do some work
            }
        })

根据示例函数将在objective-c中调用

    CRMClient *client = [CRMClient sharedClient];
[client loginWithEndpoint:@"https://mydomain.crm.dynamics.com" completion:^(ADAuthenticationResult *result) {
    if (result.error) {
        // TODO: Handle the error
    }
    else {
        // TODO: Do some work
    }
}];

1 个答案:

答案 0 :(得分:2)

CRM SDK中存在错误。 SDK在objective-c中正常运行但在swift中没有正确运行,并且在将xcode更新为7.1.1并且更改了swift 2.1错误之后。

决定使用soap身份验证,因为它易于使用且不需要azure帐户连接到crm