我在新的Swift项目中使用Objective-C Firebase框架时遇到了问题。我来自大多数C#背景,所以Swift闭包语法还不清楚。
以下是使用f作为Firebase对象的代码在Objective-C中的工作原理
[f observeEventType:FEventTypeValue withBlock:^(FDataSnapshot *snapshot) {
NSLog(@"%@ -> %@", snapshot.name, snapshot.value);
}];
XCode auto建议使用这种语法,我还没有找到可行的解决方案。
f.observeEventType(FEventTypeValue, withBlock: ((FDataSnapshot!) -> Void)?)
我想像在Objective-C示例中那样将FDataSnapshot数据分配给变量。感谢
答案 0 :(得分:14)
这是Swift的等价物:
f.observeEventType(FEventTypeValue, withBlock: {
snapshot in
println("\(snapshot.name) -> \(snapshot.value)")
})
这里的关键是in
关键字,用于将闭包的参数赋给变量
答案 1 :(得分:4)
要引入隐含的名称和尾部闭包,您可以使用:
f.observeEventType(FEventTypeValue) {
println("\($0.name) -> \($0.value)")
}
答案 2 :(得分:1)
Swift块可以与Objective-C块互换,所以它应该是这样的:
f.observeEventType(FEventTypeValue, withBlock: {
snapshot in
println("\(snapshot.name) -> \(snapshot.value)")
})