在块外部检索解析数据

时间:2015-12-01 05:22:33

标签: xcode parse-platform

    -(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中。但是当我尝试在块外面使用它时,它没有任何数据。如何在块外使用解析数据。

1 个答案:

答案 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]);
}];

希望它会对你有所帮助。