Xcode 检索块外部的解析数据
我正在尝试将对象数据从parse检索到array ParseArray中。但是当我尝试在块外使用它时,它没有任何数据。如何在块外使用解析数据。您不能,因为块代码是在语句之后运行的Xcode 检索块外部的解析数据,xcode,parse-platform,Xcode,Parse Platform,我正在尝试将对象数据从parse检索到array ParseArray中。但是当我尝试在块外使用它时,它没有任何数据。如何在块外使用解析数据。您不能,因为块代码是在语句之后运行的 -(void) GetParseData { self.ParseArray=[[NSMutableArray alloc]init]; PFQuery *RetreiveQuery = [PFQuery queryWithClassName:@"EventInfo"]; [Retr
-(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]);
}
因为它是块代码。因此,您必须创建一个带有返回参数的块作为数组来获取值
所以你要做的是
创建一个回调:
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]);
}
}];
}
在.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]);
}
}];
}
在块中获取结果:
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]);
}
}];
}
希望它能帮助你