我正在使用iOS Parse Framework。我正在创建这样的用户:
PFUser *user = [PFUser user];
user.username = self.userNameTextField.text;
user.password = self.passwordTextField.text;
user.email = self.emailTextField.text;
[user signUpInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
if (!error) {
//user saved
} else {
NSString *errorString = [error userInfo][@"error"];
// Show the errorString somewhere and let the user try again.
}
}];
但是,如果我使用此代码:
PFQuery *query = [PFUser query];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error) {
// The find succeeded.
NSLog(@"Successfully retrieved %d scores.", objects.count);
// Do something with the found objects
for (PFUser *user in objects) {
NSLog(@"User:%@",user);
}
} else {
// Log details of the failure
NSLog(@"Error: %@ %@", error, [error userInfo]);
}
}];
这可以工作并列出所有用户名。我希望每个用户只能获取他的信息,而不能获取其他人的信息。我该如何实施?我尝试执行以下操作:
PFACL *userACL = [PFACL ACLWithUser:[PFUser currentUser]];
[userACL setPublicReadAccess:NO];
[userACL setPublicWriteAccess:NO];
user.ACL = userACL;
但是它不允许我这样做,所以我基本上想做的是,我不希望我怎么做,我不希望用户能够从“用户”表中获取所有用户,我希望每个用户只能访问它自己的用户对象。
最佳答案
创建用户后,请尝试保存ACL。
PFUser *user = [PFUser user];
user.username = self.userNameTextField.text;
user.password = self.passwordTextField.text;
user.email = self.emailTextField.text;
[user signUpInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
if (!error)
{
PFACL *userACL = [PFACL ACLWithUser:[PFUser currentUser]];
[userACL setPublicReadAccess:NO];
[userACL setPublicWriteAccess:NO];
[PFUser currentUser].ACL = userACL;
[[PFUser currentUser] saveInBackground];
} else {
NSString *errorString = [error userInfo][@"error"];
// Show the errorString somewhere and let the user try again.
}
}];
关于ios - 修改当前用户的ACL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21868711/