2015-12-01 3 views
2
-(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

Вы не можете, потому что блок кода выполняется после того, как ваше заявление

NSLog(@" Outside Objects Array Retreived %lu",[self.ParseArray count]); 

, потому что это блок кода. Поэтому вам нужно создать один блок с параметром return как 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]); 
}]; 

Надеется, что это поможет.

Смежные вопросы