When your function returns your self.fetchedRecordsArray will always be nil because of blocks nature.
Try to do the following:
in .h file declare it like this:
- (void)getUserRecordWithContext:(NSManagedObjectContext *)managedObjectContext
success:(void (^)(NSArray * users))success
failure:(void (^)(NSError * error))failure;
And the implementation in .m file:
- (void)getUserRecordWithContext:(NSManagedObjectContext *)managedObjectContext
success:(void (^)(NSArray * users))success
failure:(void (^)(NSError * error))failure;
{
NSFetchRequest *userFetch = [[NSFetchRequest alloc] initWithEntityName:@"User"];
[managedObjectContext executeFetchRequest:userFetch
onSuccess:^(NSArray *results)
{
NSLog(@"Results %@", results);
self.fetchedRecordsArray= [[NSMutableArray alloc] initWithArray:results];
NSLog(@"Fetched Array %@", self.fetchedRecordsArray);
success(results);
}
onFailure:^(NSError *error)
{
NSLog(@"DATABASE ERROR: %@", error);
failure(error);
}];
}
Now when you call this function you can use your results in completion.