查询 PFQueryTableViewController
Query for PFQueryTableViewController
我正在将来自 User
class 的用户数据从 Parse 加载到 PFQueryTableViewController
。用户 class 代表来自 Facebook 的数据。现在,我不想将数据加载到当前登录用户的 PFQueryTable
中。允许加载所有其他用户数据。这是我的查询,但它仍然从用户 class 加载所有数据。有什么建议吗?
- (PFQuery *)queryForTable
{
PFQuery *query;
//[query whereKey:@"FacebookID" notEqualTo:[[PFUser currentUser] objectForKey:@"FacebookID"]];
//[query whereKey:@"username" notEqualTo:[PFUser currentUser].username];
if (self.canSearch == 0) {
query = [PFQuery queryWithClassName:@"_User"];
[query whereKey:@"objectId" notEqualTo:[PFUser currentUser].objectId];
} else {
query = [PFQuery queryWithClassName:@"_User"];
[query whereKey:@"objectId" notEqualTo:[PFUser currentUser].objectId];
[query whereKey:@"username" matchesRegex:_searchbar.text];
}
[query orderByAscending:@"createdAt"];
// If Pull To Refresh is enabled, query against the network by default.
if (self.pullToRefreshEnabled) {
query.cachePolicy = kPFCachePolicyNetworkOnly;
}
// If no objects are loaded in memory, we look to the cache first to fill the table
// and then subsequently do a query against the network.
if (self.objects.count == 0) {
query.cachePolicy = kPFCachePolicyCacheThenNetwork;
}
return query;
}
发生这种情况的原因是,您在 [query whereKey:@"FacebookID" notEqualTo:[[PFUser currentUser] objectForKey:@"FacebookID"]]
初始化查询之前 设置了此约束。将 行移动到 初始化代码下方,它会起作用。
更正代码示例:
- (PFQuery *)queryForTable
{
PFQuery *query = [PFQuery queryWithClassName:@"_User"];
[query whereKey:@"FacebookID" notEqualTo:[[PFUser currentUser] objectForKey:@"FacebookID"]];
//[query whereKey:@"FacebookID" notEqualTo:[PFUser currentUser]];
if (self.canSearch != 0) {
[query whereKey:@"username" matchesRegex:_searchbar.text];
}
[query orderByAscending:@"createdAt"];
// If Pull To Refresh is enabled, query against the network by default.
if (self.pullToRefreshEnabled) {
query.cachePolicy = kPFCachePolicyNetworkOnly;
}
// If no objects are loaded in memory, we look to the cache first to fill the table
// and then subsequently do a query against the network.
if (self.objects.count == 0) {
query.cachePolicy = kPFCachePolicyCacheThenNetwork;
}
return query;
}
选择:
所有 Parse 类 都有一个唯一的键,即 objectId
。我建议您在查询中使用它作为约束。
- (PFQuery *)queryForTable {
PFQuery *query = [PFUser query]; // [PFUser query] is same as [PFQuery queryWithClassName@"_User"]
[query whereKey:@"objectId" notEqualTo:[PFUser currentUser].objectId];
[query whereKey:@"username" matchesRegex:[NSString stringWithFormat:@"^%@", _searchBar.text] modifiers:@"i"]; // Case insensitive search
// ...other code...
return query;
}
我正在将来自 User
class 的用户数据从 Parse 加载到 PFQueryTableViewController
。用户 class 代表来自 Facebook 的数据。现在,我不想将数据加载到当前登录用户的 PFQueryTable
中。允许加载所有其他用户数据。这是我的查询,但它仍然从用户 class 加载所有数据。有什么建议吗?
- (PFQuery *)queryForTable
{
PFQuery *query;
//[query whereKey:@"FacebookID" notEqualTo:[[PFUser currentUser] objectForKey:@"FacebookID"]];
//[query whereKey:@"username" notEqualTo:[PFUser currentUser].username];
if (self.canSearch == 0) {
query = [PFQuery queryWithClassName:@"_User"];
[query whereKey:@"objectId" notEqualTo:[PFUser currentUser].objectId];
} else {
query = [PFQuery queryWithClassName:@"_User"];
[query whereKey:@"objectId" notEqualTo:[PFUser currentUser].objectId];
[query whereKey:@"username" matchesRegex:_searchbar.text];
}
[query orderByAscending:@"createdAt"];
// If Pull To Refresh is enabled, query against the network by default.
if (self.pullToRefreshEnabled) {
query.cachePolicy = kPFCachePolicyNetworkOnly;
}
// If no objects are loaded in memory, we look to the cache first to fill the table
// and then subsequently do a query against the network.
if (self.objects.count == 0) {
query.cachePolicy = kPFCachePolicyCacheThenNetwork;
}
return query;
}
发生这种情况的原因是,您在 [query whereKey:@"FacebookID" notEqualTo:[[PFUser currentUser] objectForKey:@"FacebookID"]]
初始化查询之前 设置了此约束。将 行移动到 初始化代码下方,它会起作用。
更正代码示例:
- (PFQuery *)queryForTable
{
PFQuery *query = [PFQuery queryWithClassName:@"_User"];
[query whereKey:@"FacebookID" notEqualTo:[[PFUser currentUser] objectForKey:@"FacebookID"]];
//[query whereKey:@"FacebookID" notEqualTo:[PFUser currentUser]];
if (self.canSearch != 0) {
[query whereKey:@"username" matchesRegex:_searchbar.text];
}
[query orderByAscending:@"createdAt"];
// If Pull To Refresh is enabled, query against the network by default.
if (self.pullToRefreshEnabled) {
query.cachePolicy = kPFCachePolicyNetworkOnly;
}
// If no objects are loaded in memory, we look to the cache first to fill the table
// and then subsequently do a query against the network.
if (self.objects.count == 0) {
query.cachePolicy = kPFCachePolicyCacheThenNetwork;
}
return query;
}
选择:
所有 Parse 类 都有一个唯一的键,即 objectId
。我建议您在查询中使用它作为约束。
- (PFQuery *)queryForTable {
PFQuery *query = [PFUser query]; // [PFUser query] is same as [PFQuery queryWithClassName@"_User"]
[query whereKey:@"objectId" notEqualTo:[PFUser currentUser].objectId];
[query whereKey:@"username" matchesRegex:[NSString stringWithFormat:@"^%@", _searchBar.text] modifiers:@"i"]; // Case insensitive search
// ...other code...
return query;
}