1

我对 iOS 很陌生PFQuery,我需要你的帮助

我试图将获得的对象数组存储PFQuery到本地NSArray,我试图在里面做,if (!error)但它不会离开块,一旦块终止,我的数组上的值也是如此。

 //InstallersDirectory.m

 @interface InstallersDirectoryTVC ()

 @property (nonatomic, strong) NSArray *supervisors;


 @end

 //more code goes here
- (void)viewDidLoad
{
  [super viewDidLoad];


  PFQuery *query = [PFQuery queryWithClassName:@"InstallersInfo"];
  [query whereKey:@"supervisor" equalTo:@"yes"];
  [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {

      if (!error) {
          for (PFObject *object in objects) {
              self.supervisors = [objects valueForKey:@"supervisor"];
          }


  }else {
      NSLog(@"Error, %@ %@",error,[error userInfo]);
  }
}];

一切都在块内工作,例如 self.supervisors.count 或NSLog,但它根本不会离开块。你能告诉我如何才能将这些值存储到 self.supervisors 吗?

谢谢 !!

编辑 | 评论

4

1 回答 1

0

如果您在这个问题上仍然需要帮助,这里有一两个建议:

首先,self.supervisors 是一个 NSArray。作为 NSArray,它必须在创建时完全初始化和填充。因此,即使您正在迭代您的结果,您每次都在创建一个新数组,这意味着只有最后一次迭代可能会存储在 self.supervisors 中。

试试这个,

@property (nonatomic,strong) NSMutableArray *supervisors;

在你的街区:

[self.supervisors addObject:object];
//note: this will put the entire returned object in your mutable array

然后稍后在您的块之外:列出所有主管:

 for (PFObject *supervisor in self.supervisors) {
        NSLog(@"supervisor info:%@",supervisor);
 }

要获得列表中的第 4 个主管:

PFObject *superVisorNumber4 = [self.supervisors objectAtIndex:4];

从那个主管那里得到电话号码(编造这个:)

NSString *phone = [superVisorNumber4 objectForKey:@"phone"];

希望有帮助

于 2013-03-12T03:23:58.247 回答