ios - 将 Obj C 转换为 Swift 错误 :type of expression is ambiguous without more context

标签 ios objective-c swift

我一直在我的 swift 项目中使用 objC 框架,因此我将 objC 方法转换为 swift。 objC方法如下:

[[MySingleton sharedInstance] provisionUserWithPIN:pin
                                               organizationID:kOrgID
                                                  accessToken:kOrgToken
                                                   completion:^(NSString *UID, User *user) {
 }];

我的快速转换是:

 MySingleton.sharedInstance().provisionUserWithPIN(pin, organizationID: kOrgID, accessToken: kOrgToken) {(UID: String, user: User) in
    }

我收到错误:表达式类型不明确,在 ( 中的 ProvisionUserWithPIN 后没有指出更多上下文。

我不知道我做错了什么。坚持了几个小时。

声明:

- (void)provisionUserWithPIN:(NSString *)PIN organizationID:(NSString *)organizationID accessToken:(NSString *)accessToken completion:(void (^)(NSString *UID, User *user))completion;  

最佳答案

你应该注意到在 Objective-C 中这样声明的参数

(NSString *)something

在 Swift 中变成这个

something:String

但它实际上被翻译成这样:

something:String!

所以你可以在 Swift 中调用你的 Objective-C 方法

    MySingleton.sharedInstance().provisionUserWithPIN(
        "pin",
        organizationID: "orgID",
        accessToken: "accessTken") { (UID: String!, user: User!) -> () in

    }

希望这对您有所帮助。

关于ios - 将 Obj C 转换为 Swift 错误 :type of expression is ambiguous without more context,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32384728/

相关文章:

android - sqlcipher - sqlcipher 有多安全?它被黑客入侵了吗?

swift - 使用 Swift 通过 REST API 为 youtube 上传设置片段数据

ios - 在 SwiftUI 中切换更改后更新数组

ios - 如何在不重复代码的情况下在所有 Controller 中显示警报?

ios - 带按钮的可滚动菜单部分

java - “J2OBJC_HOME\不能\正确\定义\在\Settings.xcconfig中

objective-c - Cocoa 的 NIB/XIB 混淆

ios - 获取数据但无法正确显示

ios - 如何检查我的NSMutableOrderedSet中是否存在我的NSString?

ios - 加速从 SpriteSheet 创建 UIImage