首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正在从其他PFUser更改PFUser中的字段,解析iOS

正在从其他PFUser更改PFUser中的字段,解析iOS
EN

Stack Overflow用户
提问于 2015-12-05 01:26:24
回答 2查看 136关注 0票数 0

我正在尝试更改另一个PFUser字段的值,从另一个未验证的PFUser解析,但是我似乎不能这样做。我正在尝试从一个用户增加另一个用户的“小时数”。下面是我尝试这样做的方法:

代码语言:javascript
复制
PFUser *currentUser = [PFUser currentUser];
PFACL *ACL = [PFACL ACLWithUser:[PFUser currentUser]];
[ACL setPublicReadAccess:YES];

PFUser *selectedUser = [self.formValues objectForKey:@"user"];
NSLog(@"User ID: %@", selectedUser.objectId);

PFObject *volunteerSheet = [PFObject objectWithClassName:@"VolunteerSheet"];
volunteerSheet[@"userID"] = selectedUser.objectId;
volunteerSheet[@"fromID"] = currentUser.objectId;
volunteerSheet[@"volunteerTitle"] = [self.formValues objectForKey:@"title"];
volunteerSheet[@"location"] = [self.formValues objectForKey:@"location"];
volunteerSheet[@"volunteerHours"] = [self.formValues objectForKey:@"hours"];
volunteerSheet[@"volunteerDescription"] = [self.formValues objectForKey:@"description"];
volunteerSheet.ACL = ACL;
[volunteerSheet saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
    if (succeeded) {
        // The object has been saved.
        PFQuery *query = [PFQuery queryWithClassName:@"_User"];

        // Retrieve the object by id
        [query getObjectInBackgroundWithId:selectedUser.objectId
                                     block:^(PFObject *user, NSError *error) {
                                         [user incrementKey:@"volunteerHours" byAmount:(NSNumber*)[self.formValues objectForKey:@"hours"]];
                                         [user saveInBackgroundWithBlock:^(BOOL succeeded, NSError * _Nullable error) {
                                             if (succeeded) {
                                                 NSLog(@"Succeeded");
                                             }else{
                                                 NSLog(error.description);
                                             }
                                         }];
                                     }];

        NSLog(@"Saved");
        [self dismissViewControllerAnimated:YES completion:^{
            UIAlertView * alert =[[UIAlertView alloc ] initWithTitle:@"Success!"
                                                             message:@"Hours Sent succesfully."
                                                            delegate:self
                                                   cancelButtonTitle:nil
                                                   otherButtonTitles: nil];
            [alert addButtonWithTitle:@"Okay"];
            [alert show];
        }];
    } else {
        // There was a problem, check error.description
        NSLog(@"Error: %@",error.description);
    }
}];
EN

回答 2

Stack Overflow用户

发布于 2015-12-05 02:03:28

用户会自动设置安全措施,禁止修改其他用户(clps或alcs)。也许可以考虑转而使用云代码,并使用主密钥调用?

票数 0
EN

Stack Overflow用户

发布于 2015-12-05 02:30:31

用户将ACL设置为仅允许自己更改其值。要解决此问题,您必须在每次创建用户时更改ACL,以允许任何用户拥有对其的写权限(非常危险且根本不安全),或者需要调用云函数Parse.Cloud.useMasterKey(),该函数将覆盖所有权限,并使您能够进行更改。显然,在进行这些更改之前,您仍然应该做一些安全检查,以确保这些更改是允许的/适当的更改。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34094045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档