我是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?
谢谢!
编辑|评论
答案 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"];
希望有所帮助