Xcode 检索块外部的解析数据

Xcode 检索块外部的解析数据,xcode,parse-platform,Xcode,Parse Platform,我正在尝试将对象数据从parse检索到array ParseArray中。但是当我尝试在块外使用它时,它没有任何数据。如何在块外使用解析数据。您不能,因为块代码是在语句之后运行的 -(void) GetParseData { self.ParseArray=[[NSMutableArray alloc]init]; PFQuery *RetreiveQuery = [PFQuery queryWithClassName:@"EventInfo"]; [Retr

我正在尝试将对象数据从parse检索到array ParseArray中。但是当我尝试在块外使用它时,它没有任何数据。如何在块外使用解析数据。

您不能,因为块代码是在语句之后运行的

    -(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]);

        }
   }];

    }
希望它能帮助你