2016-01-08 7 views
1

Так что в моем приложении я использую Parse для учетных записей пользователей. У меня есть класс «Follow» с полями «to» и «from», содержащие идентификаторы объектов пользователя, позволяющие пользователям следовать друг за другом. Теперь, если я каким-то образом удаляю пользователя, последующее отношение остается в тактике и запрос на пустые пользовательские данные вызывает ошибку, не найденную объектом. Я хочу знать, как я могу удалить следующее отношение, если какое-либо из полей «to» или «from» содержит объектный идентификатор объекта, который не существует.Программно удалять данные, связанные с PFUser.objectID, если PFUser удален

Я попытался запросить объекты по их объекту ID, но любая попытка проверки пустых данных (например, проверка, если user.username равна нулю) привела к отсутствующей ошибке объекта, и я не могу проверить, равен ли объект нулю потому что Xcode говорит, что этого никогда не будет.

Спасибо!

+0

вы удалить пользователя вручную? – Jaimish

+0

да, но я спрашивал на всякий случай, что я хотел бы реализовать метод deleteUser(). Но я думаю, что в этом случае я мог бы удалить любые связанные последующие отношения перед удалением пользователя. Так что я, наверное, не должен беспокоиться об этом? – NotMe

+0

для этого вы должны использовать облачный код ..... реализовать триггер до удаления – Jaimish

ответ

1

Я думаю, что вам нужно приобрести его вручную, если вы удалили пользователя, тогда вы можете удалить все его отношения для поддержания целостности базы данных, следующий за кодом, который вы вызываете после удаления любого пользователя.

PFQuery * _to = [PFQuery queryWithClassName:@"Follow"]; 
[_to whereKey:@"to" equalTo:@"Replace UserID of Deleted User"]; 

PFQuery * _from = [PFQuery queryWithClassName:@"Follow"]; 
[_from whereKey:@"from" equalTo:@"Replace UserID of Deleted User"]; 

PFQuery *query = [PFQuery orQueryWithSubqueries:@[_to, _from]]; 
[query findObjectsInBackgroundWithBlock:^(NSArray *results, NSError *error) { 
    if (!error) { 
    // The find succeeded. 
    NSLog(@"Successfully retrieved %d relations.", results.count); 
    // Do something with the found objects, lets delete them all to intact relationship 
    [PFObject deleteAllInBackground:results]; 
} else { 
    // Log details of the failure 
    NSLog(@"Error: %@ %@", error, [error userInfo]); 
} 
}]; 

Пожалуйста, перейдите по этой ссылке для подробного описания и информации:
Parse Compound Queries

+0

да, спасибо! – NotMe

+1

не забудьте отметить ответ как принятый :) – Aamir

+0

не точно решил мою проблему, и он находится в obj-c – NotMe