首页 > 解决方案 > Swift - Obj C 与闭包/块的互操作性

问题描述

我试图将一个 swift 类导入我的 Obj C 项目。一切正常,但我试图将此 Swift Closure 语句转换为 OBJ C。我相信这将是 obj c 中的一个块,但我似乎无法得到它,任何帮助将不胜感激!

斯威夫特宣言: public var otpEnteredString :((String)->())?

视图控制器中的 Swift 使用:

    ObjectName.otpEnteredString = { pin in
    NSLog("The entered pin is %@",pin);
}

在 Obj C 我试图做

    [ObjectName otpEnteredString:^(NSString *pin){
    NSLog(@"The entered pin is %@",pin);
}];

但我得到标准“没有可见的界面声明选择器..任何帮助将不胜感激!

我可以在 xcode 中看到声明,但我不完全确定如何将其转换为 obj c

在此处输入图像描述

标签: objective-cswiftobjective-c-blocks

解决方案


尝试这个:

ObjectName.otpEnteredString = ^(NSString *pin){
    NSLog(@"The entered pin is %@",pin);
};

或这个:

[ObjectName setOtpEnteredString:^(NSString *pin){
    NSLog(@"The entered pin is %@",pin);
}];

推荐阅读