PFQuery 数组问题
PFQuery Array Issue
我有以下代码将用户列表从 Parse 加载到名为用户的数组中:
PFUser *currentUser = [PFUser currentUser];
NSString *currentUserUni = currentUser[@"university"];
//Parse Query
//-------------------------------------------
PFQuery *query = [PFQuery queryWithClassName:@"_User"];
[query whereKey:@"university" equalTo:currentUserUni];
[query setLimit:50];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
[users removeAllObjects];
[users addObjectsFromArray:objects];
}];
但是,如果我尝试呼叫最后那个右括号之外的用户,则为零。有人知道吗
1)是什么原因造成的?
和
2) 如何将值放入可以在右括号外访问的数组中?
1) findObjectsInBackgroundWithBlock
在后台检索对象,这意味着它是异步发生的 - 该方法在其他进程运行时运行 运行 而不是顺序运行。所以说你有你当前的代码:
注意 我会在弄乱您的 users
数组之前提供错误检查。
PFQuery *query = [PFQuery queryWithClassName:@"_User"];
[query whereKey:@"university" equalTo:currentUserUni];
[query setLimit:50];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error) {
[users removeAllObjects];
[users addObjectsFromArray:objects];
} else {
// show your alert message
}
}];
... some code that comes after the block ...
当您搜索背景...
2) 要解决您的问题,需要做的是将 __block
关键字添加到 users
数组中。
此处引用了堆栈溢出中的答案,进一步解释了 __block
关键字。
__block keyword
采用 jsetting32 答案并进行更改
我认为你应该将 removeAllObjects 排除在循环之外
[users removeAllObjects];
PFQuery *query = [PFQuery queryWithClassName:@"_User"];
[query whereKey:@"university" equalTo:currentUserUni];
[query setLimit:50];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error) {
[users addObjectsFromArray:objects];
} else {
// show your alert message
}
}];
... some code that comes after the block ...
我有以下代码将用户列表从 Parse 加载到名为用户的数组中:
PFUser *currentUser = [PFUser currentUser];
NSString *currentUserUni = currentUser[@"university"];
//Parse Query
//-------------------------------------------
PFQuery *query = [PFQuery queryWithClassName:@"_User"];
[query whereKey:@"university" equalTo:currentUserUni];
[query setLimit:50];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
[users removeAllObjects];
[users addObjectsFromArray:objects];
}];
但是,如果我尝试呼叫最后那个右括号之外的用户,则为零。有人知道吗 1)是什么原因造成的? 和 2) 如何将值放入可以在右括号外访问的数组中?
1) findObjectsInBackgroundWithBlock
在后台检索对象,这意味着它是异步发生的 - 该方法在其他进程运行时运行 运行 而不是顺序运行。所以说你有你当前的代码:
注意 我会在弄乱您的 users
数组之前提供错误检查。
PFQuery *query = [PFQuery queryWithClassName:@"_User"];
[query whereKey:@"university" equalTo:currentUserUni];
[query setLimit:50];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error) {
[users removeAllObjects];
[users addObjectsFromArray:objects];
} else {
// show your alert message
}
}];
... some code that comes after the block ...
当您搜索背景...
2) 要解决您的问题,需要做的是将 __block
关键字添加到 users
数组中。
此处引用了堆栈溢出中的答案,进一步解释了 __block
关键字。
__block keyword
采用 jsetting32 答案并进行更改
我认为你应该将 removeAllObjects 排除在循环之外
[users removeAllObjects];
PFQuery *query = [PFQuery queryWithClassName:@"_User"];
[query whereKey:@"university" equalTo:currentUserUni];
[query setLimit:50];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error) {
[users addObjectsFromArray:objects];
} else {
// show your alert message
}
}];
... some code that comes after the block ...