通过存储在不同词典

时间:2016-10-11 15:40:24

标签: ios objective-c firebase firebase-realtime-database firebase-authentication

在我的应用中,我有一些表格视图来显示用户特定的数据。 要显示数据,我使用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;
}

然后,当用户删除表视图中的行时,我可以永久删除主题列表中的值。我不能同时做到这两点。

0 个答案:

没有答案