-(void) GetParseData
{
self.ParseArray=[[NSMutableArray alloc]init];
PFQuery *RetreiveQuery = [PFQuery queryWithClassName:@"EventInfo"];
[RetreiveQuery findObjectsInBackgroundWithBlock:^(NSArray *objects,NSError *error)
{
if(!error)
{
self.ParseArray= [NSMutableArray arrayWithArray:objects];
NSLog(@" Inside Objects Array Retreived %lu",[self.ParseArray count]);
}
}];
NSLog(@" Outside Objects Array Retreived %lu",[self.ParseArray count]);
}
我正在尝试将对象数据从解析中检索到数组ParseArray中。但是当我尝试在块外面使用它时,它没有任何数据。如何在块外使用解析数据。
答案 0 :(得分:0)
你不能因为在你的陈述
之后运行分组代码NSLog(@" Outside Objects Array Retreived %lu",[self.ParseArray count]);
因为它是块代码。因此,您必须创建一个带有返回参数的块作为array
来获取值。
所以你需要做的就是。
创建一个回调:
<。>在.h(或.m文件)中。typedef void (^ParseArrayCallback)(NSMutableArray *array);
在方法中添加该回调作为参数:
-(void) GetParseData:(ParseArrayCallback)parseArrayCallback{
self.ParseArray=[[NSMutableArray alloc]init];
PFQuery *RetreiveQuery = [PFQuery queryWithClassName:@"EventInfo"];
[RetreiveQuery findObjectsInBackgroundWithBlock:^(NSArray *objects,NSError *error)
{
if(!error)
{
self.ParseArray= [NSMutableArray arrayWithArray:objects];
if(parseArrayCallback) {
parseArrayCallback(self.ParseArray);
}
NSLog(@" Inside Objects Array Retreived %lu",[self.ParseArray count]);
}
}];
}
获取结果:
[self GetParseData:^(NSMutableArray *array){
NSLog(@" Outside Objects Array Retreived %lu",[array count]);
}];
希望它会对你有所帮助。