Reputation: 1290
I'm having trouble using the Objective-C Firebase framework in a new Swift project. I'm coming from mostly a C# background so the Swift closure syntax isn't that clear yet.
Here's how the code work in Objective-C with f being the Firebase object
[f observeEventType:FEventTypeValue withBlock:^(FDataSnapshot *snapshot) {
NSLog(@"%@ -> %@", snapshot.name, snapshot.value);
}];
XCode auto suggests this syntax, and I have yet to find a working solution.
f.observeEventType(FEventTypeValue, withBlock: ((FDataSnapshot!) -> Void)?)
I'd like assign the FDataSnapshot data to a variable as the Objective-C example is doing. Thanks
Upvotes: 11
Views: 7680
Reputation: 41246
To throw in implied names and tail closures, you can use:
f.observeEventType(FEventTypeValue) {
println("\($0.name) -> \($0.value)")
}
Upvotes: 4
Reputation: 237110
Swift blocks are interchangeable with Objective-C blocks, so it ought to be something like:
f.observeEventType(FEventTypeValue, withBlock: {
snapshot in
println("\(snapshot.name) -> \(snapshot.value)")
})
Upvotes: 1
Reputation: 16865
Here's the Swift equivalent:
f.observeEventType(FEventTypeValue, withBlock: {
snapshot in
println("\(snapshot.name) -> \(snapshot.value)")
})
The key here is the in
keyword to assign arguments to the closure to variables
Upvotes: 14