2014-09-27 1 views
0

Я пытаюсь обновить объект чата, который я сохранил с помощью Parse, и хотя он работает иногда, он несовместим. Если очистить объект из данных на стороне браузера, он будет работать в несколько раз, но я получаю ошибку:Ошибка обновления элемента анализа: объект не найден для обновления (код: 101, версия: 1.3.0)

Error: object not found for update (Code: 101, Version: 1.3.0) 

Вот код, я использую, хотя я перепробовал много способов. Этот код почти идентичен документации Parse.

PFObject *currentChatroom = _currentChatroom; 
    NSString *objID = currentChatroom.objectId; 
    PFQuery *query = [PFQuery queryWithClassName:@"Chats"]; 

    // Retrieve the object by id 
    [query getObjectInBackgroundWithId:objID block:^(PFObject *fetchedChat, NSError *error) { 

     // Now let's update it with some new data. In this case, only cheatMode and score 
     // will get sent to the cloud. playerName hasn't changed. 
     fetchedChat[@"lastTextSent"] = lastTextWithUser; 
     fetchedChat[@"lastTextSentDate"] = date; 
     [fetchedChat saveInBackground]; 

    }]; 

Для ровного Вот рекомендация Анализировать:

PFQuery *query = [PFQuery queryWithClassName:@"GameScore"]; 

// Retrieve the object by id 
[query getObjectInBackgroundWithId:@"xWMyZ4YEGZ" block:^(PFObject *gameScore, NSError *error) { 

    // Now let's update it with some new data. In this case, only cheatMode and score 
    // will get sent to the cloud. playerName hasn't changed. 
    gameScore[@"cheatMode"] = @YES; 
    gameScore[@"score"] = @1338; 
    [gameScore saveInBackground]; 

}]; 

Кодекс иногда работает, так что я знаю, что это не проблема. Я просто не знаю, что это такое.

ответ

-1

Код, который я использовал для решения этой проблемы, позволял каждому пользователю объекта (в этом случае в чате) иметь разрешения ACL для редактирования (writeAccess) PFObject, когда он был впервые создан. Для того, чтобы сделать это, я использовал код:

  PFObject *newChatroom = [PFObject objectWithClassName:@"Chats"]; 

      // Create ACL to allow both users to edit/update the chatroom 
     PFACL *multipleUserRights = [PFACL ACL]; 

      // _currentFriend is one user in the chatroom 
     [multipleUserRights setReadAccess:YES forUser:_currentFriend]; 
     [multipleUserRights setWriteAccess:YES forUser:_currentFriend]; 

      // Give the current user permission as well 
     [multipleUserRights setReadAccess:YES forUser:[PFUser currentUser]]; 
     [multipleUserRights setWriteAccess:YES forUser:[PFUser currentUser]]; 

     newChatroom.ACL = multipleUserRights; 

я нашел подобные вопросы к этому, и некоторые из них имели аналогичные решения, но не с ошибкой 1.3.0, так что я бы не стал рассматривать его дубликат.

+0

Это не то разрешение, которое требуется. –