tommi tommi - 10 months ago 129
Objective-C Question

Assign a variable inside a Block to a variable outside a Block

I'm getting an error


Variable is not assignable (missing __block type specifier)


on the line
aPerson = participant;
. How can I make sure the block can access the
aPerson
variable and the
aPerson
variable can be returned?

Person *aPerson = nil;

[participants enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
Person *participant = (Person*)obj;

if ([participant.gender isEqualToString:@"M"]) {
aPerson = participant;
*stop = YES;
}
}];

return aPerson;

Answer

You need to use this line of code to resolve your problem:

__block Person *aPerson = nil;

For more details, please refer to this tutorial : Blocks and Variables