2015-10-09 1 views
0

Я пытаюсь добавить список пользователей, которые следуют за пользователем, в столбец под названием «Последователи» под пользователем, который извлекается из objectatindex тега отправителя. Вот код:Добавить уникальный объект в PFquery, который является пользователем

-(void)followButton:(id)sender { 


UIButton *senderButton = (UIButton *)sender; 
NSLog(@"current Row=%ld",(long)senderButton.tag); 

PFObject *object = [self.objects objectAtIndex:senderButton.tag]; 

if (![[object objectForKey:@"followers"]containsObject:[PFUser currentUser].objectId]) { 

    [[PFUser currentUser] addUniqueObject:object.objectId forKey:@"following"]; 
    [[PFUser currentUser] saveInBackground]; 


    PFUser *otherUser = [self.objects objectAtIndex:senderButton.tag]; 
    NSLog(@"Followed %@", otherUser); 

    [otherUser addUniqueObject:[PFUser currentUser].objectId forKey:@"followers"]; 
    [otherUser saveInBackground]; 


    // NSLog(@"Followed %@", object); 



} else { 

    [[PFUser currentUser] removeObject:object.objectId forKey:@"following"]; 
    [[PFUser currentUser] saveInBackground]; 

    PFUser *otherUser = [self.objects objectAtIndex:senderButton.tag]; 
    [otherUser removeObject:[PFUser currentUser].objectId forKey:@"followers"]; 
    [otherUser saveInBackground]; 


     } 

[self.tableView reloadData]; 

} 

По какой-то причине, приведенный выше код только добавляет к массиву «После» текущего пользователя. При повторном нажатии объект должен быть удален, но ничего не происходит. Кроме того, код

PFUser *otherUser = [self.objects objectAtIndex:senderButton.tag]; 
    [otherUser removeObject:[PFUser currentUser].objectId forKey:@"followers"]; 
    [otherUser saveInBackground]; 

абсолютно ничего не делает тем, что должен делать работу добавить в «Аудитория» массив пользователя в выбранной строке. Что я делаю не так? Цель состоит в том, чтобы получить работу следующих/последователей. Я использую PFQueryTableViewController!

ответ

0

Вы не можете изменять объекты другого пользователя у клиента. Вы можете изменить только текущего пользователя. Способ изменения пользователей, которые являются текущим пользователем, заключается в использовании главного ключа в облачном коде с помощью Parse.Cloud.useMasterKey();

https://parse.com/questions/how-can-i-allow-a-user-to-edit-another-user

Так создать функцию в коде облака, передавая имя пользователя, «otherUser» и ObjectId, который вы хотите удалить

Parse.Cloud.define("RemoveFollower", function(request, response){ 
var username = request.params.username; 
var id_to_remove = request.params.objectId_passed; 
var query = new Parse.Query(Parse.User); 
query.equalTo("username", username); 
query.find({ 
    success: function(results){ 
     var u = results[0]; 
     //u modify the user u however you like... 
     u.save(); 
     response.success("Success"); 
    }, 
    error: function(){ 
     response.error("Error"); 
    } 
    });