使用Swift处理Objective-C块

Bea*_*wah 11 closures objective-c swift

我在新的Swift项目中使用Objective-C Firebase框架时遇到了麻烦.我来自大多数C#背景,所以Swift闭包语法还不是很清楚.

以下是代码在Objective-C中的工作方式,其中f是Firebase对象

[f observeEventType:FEventTypeValue withBlock:^(FDataSnapshot *snapshot) {
  NSLog(@"%@ -> %@", snapshot.name, snapshot.value);
}];
Run Code Online (Sandbox Code Playgroud)

XCode自动建议这种语法,我还没有找到一个有效的解决方案.

f.observeEventType(FEventTypeValue, withBlock: ((FDataSnapshot!) -> Void)?)
Run Code Online (Sandbox Code Playgroud)

我想像在Objective-C示例中那样将FDataSnapshot数据分配给变量.谢谢

Jac*_*ack 14

这是Swift的等价物:

f.observeEventType(FEventTypeValue, withBlock: {
    snapshot in
    println("\(snapshot.name) -> \(snapshot.value)")
})
Run Code Online (Sandbox Code Playgroud)

这里的关键是in将闭包的参数赋给变量的关键字