解析具体,如何在NSArray上保存查询结果

时间:2013-03-06 11:31:17

标签: ios objective-c xcode objective-c-blocks parse-platform

我是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?

谢谢!

编辑|评论

1 个答案:

答案 0 :(得分:0)

如果您仍然需要有关此问题的帮助,请提供以下建议:

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

试试这个,

@property(非原子,强)NSMutableArray *主管;

在您的区块中:

[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"];

希望有所帮助