Swift 中的 Objective-C block - 变量丢失?

标签 objective-c swift objective-c-blocks

这是我在 Objective-c 中定义的 block 类型

typedef void (^arrayBlock)(NSArray *blockArray);

我有一个 Objective-C 类,其方法使用它作为返回 block

-(void)loadTimesWithSuccessBlock:(arrayBlock)successBlock;

当我尝试在 Swift 中使用此方法时,这就是自动完成功能给我的结果。

let timeClockLibrarian = HMFTimeClockLibrarian()
timeClockLibrarian.loadTimesWithSuccessBlock { ([AnyObject]!) -> Void in
   //Where is blockArray?         
}

我假设 [AnyObject]!应该是NSArray。但我不知道如何访问该变量?

如果我在 Objective-C 中使用这个方法,我会得到这样的结果:

[timeClockLibrarian loadTimesWithSuccessBlock:^(NSArray *blockArray) {
        //I can use the blockArray here :)
}];

最佳答案

[AnyObject]!确实只是变量的类型;自动完成没有命名它。您只需要执行类似 (blockArray: [AnyObject]!) 的操作。

let timeClockLibrarian = HMFTimeClockLibrarian()
timeClockLibrarian.loadTimesWithSuccessBlock { (blockArray: [AnyObject]!) -> Void in
   // your code here
}

关于Swift 中的 Objective-C block - 变量丢失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32400806/

相关文章:

ios - Xcode 6 & Swift - 缩进反转?

ios - 子类化 UIButton 并覆盖触摸事件 - 不起作用

ios - 这样安全吗? Singleton上可能的保留周期为自成 block

c# - C# 中等效的 Objective-C 代码块

iphone - CFAttributedStringRef 中的内存泄漏

ios - 如何在CartoDB map 层中应用CSS?

objective-c - Xcode 8 中的自动完成速度慢

ios - 将 nsmutablearray 复制到另一个 viewcontroller 中的另一个 nsmutablearray 正在数组中显示空值

ios - 如何将 CLLocationManager.magneticHeading 转换为弧度?

ios - 将 block 声明为 typedef