在我的应用中,我有一些表格视图来显示用户特定的数据。 要显示数据,我使用FIRDAtabaseQuery。当用户从特定表视图中删除该行时,根据查询,只会删除某些数据。
当用户保存他们的数据时,它会被存储在两个地方"主题" "和用户帖子"如下图所示
topics
-KTUMSoVFjN8tR82KUPl
author:
"Joshua Browne"
body:
"Notes:"
user-posts
x0MJQL0vRMZXZ83ouI8EvUVaPPd2addclose
-KTUMSoVFjN8tR82KUPl
author:
"Joshua Browne"
body:
"Notes:"
正如你所看到的,他们都有相同的钥匙。 用户可以使用下面的代码删除一行,具体取决于我是否已查询"主题"或"用户帖子"只会删除一个。
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete) {
[[self refForIndex: indexPath.row] removeValue];
}
}
所以我的问题是,在我声明的代码中:
[[self refForIndex:indexPath.row] removeValue];
有没有办法告诉代码,而不是删除其中一个目录中的密钥,如果另一个目录中存在相同的密钥,也删除该引用。
现在我从用户帖子查询数据如下:
-(FIRDatabaseQuery *)getQuery {
return [[self.ref child:@"user-posts"] child:[super getUid]];
}
如果我删除它会永久删除它,这就是我想要的。
如果我要将查询更改为:
- (FIRDatabaseQuery *) getQuery {
FIRDatabaseQuery *recentPostsQuery = [[self.ref child:@"topics"] queryLimitedToFirst:100];
return recentPostsQuery;
}
然后,当用户删除表视图中的行时,我可以永久删除主题列表中的值。我不能同时做到这两点。