Objective-C Swift 中的块 - 缺少变量?
Objective-C Block in Swift - Variable Missing?
这是我在 objective-c
中定义的块类型
typedef void (^arrayBlock)(NSArray *blockArray);
我有一个 objective-c class 的方法,将其用作 return 块
-(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
}
这样写:
let timeClockLibrarian = HMFTimeClockLibrarian()
timeClockLibrarian.loadTimesWithSuccessBlock { blockArray in
doSomething(blockArray)
}
如果你想引用 weak self 使用这个:
let timeClockLibrarian = HMFTimeClockLibrarian()
timeClockLibrarian.loadTimesWithSuccessBlock { [weak self] blockArray in
self?.doSomething(blockArray)
}
您可能还想摆脱隐式展开。如果是这样,请在 Obj-C 代码中指定可空性:
typedef void (^arrayBlock)(nullable NSArray *blockArray);
这是我在 objective-c
中定义的块类型typedef void (^arrayBlock)(NSArray *blockArray);
我有一个 objective-c class 的方法,将其用作 return 块
-(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
}
这样写:
let timeClockLibrarian = HMFTimeClockLibrarian()
timeClockLibrarian.loadTimesWithSuccessBlock { blockArray in
doSomething(blockArray)
}
如果你想引用 weak self 使用这个:
let timeClockLibrarian = HMFTimeClockLibrarian()
timeClockLibrarian.loadTimesWithSuccessBlock { [weak self] blockArray in
self?.doSomething(blockArray)
}
您可能还想摆脱隐式展开。如果是这样,请在 Obj-C 代码中指定可空性:
typedef void (^arrayBlock)(nullable NSArray *blockArray);