如果删除PFUser,则以编程方式删除与PFUser.objectID关联的数据

时间:2016-01-08 04:47:27

标签: ios swift parse-platform pfobject pfuser

所以在我的应用程序中,我使用Parse作为用户帐户。我有一个班级"关注" " to" "来自"包含用户对象ID的字段,允许用户互相关注。现在,如果我以某种方式删除用户,则跟随关系保持不变并且查询空用户数据会引发对象未找到错误。我想知道的是如果删除跟随关系,如果有任何"到"或"来自" fields包含不存在的对象的objectID。

我已经尝试通过objectID查询对象,但是任何检查空数据的尝试(比如检查user.username是否为nil)都会导致丢失对象错误,我无法检查对象是否是没有,因为Xcode说它永远不会。

谢谢!

1 个答案:

答案 0 :(得分:2)

我认为您需要手动获取它,如果您已删除用户,则可以删除其所有关系以维护数据库完整性,以下是删除任何用户后要调用的代码。

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