Parse.com 查询 PFUser CurrentUser

Posted

技术标签:

【中文标题】Parse.com 查询 PFUser CurrentUser【英文标题】:Parse.com Query for PFUser CurrentUser 【发布时间】:2013-11-01 20:24:31 【问题描述】:

大家好,我发布的查询中的每个人我正在尝试检索所有帖子和 PfUserCurrent 与 PfUserCurrent 分享友谊的人的所有帖子。

查询工作正常,但我只有一个问题,查询显示了 CurrentUser 之友的所有帖子,但没有显示 CurrentUser 发送的帖子...我尝试了几次但无法修复这个……你能解释一下我哪里错了吗?

-(void)QueryForPost 

    PFQuery *QueryForFriend=[PFQuery queryWithClassName:@"Friendships"];
    [QueryForFriend whereKey:@"To_User" equalTo:[PFUser currentUser]];
    [QueryForFriend whereKey:@"STATUS"  equalTo:@"Confirmed"];



    PFQuery *QueryYES = [PFQuery queryWithClassName:@"Post"];
    [QueryYES whereKey:@"FLASH_POST" equalTo:[NSNumber numberWithBool:YES]];
    [QueryYES whereKey:@"UserSelected" equalTo:[PFUser currentUser]];


    PFQuery *QueryNO = [PFQuery queryWithClassName:@"Post"];
    [QueryNO whereKey:@"FLASH_POST" equalTo:[NSNumber numberWithBool:NO]];
    [QueryNO whereKey:@"Author" matchesKey:@"From_User" inQuery:QueryForFriend];

    PFQuery *query = [PFQuery orQueryWithSubqueries:@[QueryYES,QueryNO]];
    [query includeKey:@"Author"];

    [query orderByDescending:FF_CREATEDAT];
    [query findObjectsInBackgroundWithBlock:^(NSArray *results, NSError *error) 
        if (!error) 
            NSLog(@"%@", results);
            ArrayforPost = [[NSMutableArray alloc] init];
            for (PFObject *object in results) 
                [ArrayforPost addObject:object];
            
            [self.FFTableView reloadData];
        
    ];




【问题讨论】:

它是意大利语,所以我很难理解你的数据库方案。您应该向我们提供有关您的数据库方案的更多详细信息:) 您可以尝试在您的QueryForFriend queries 下添加此[QueryForFriend includeKey:@"Da_User"]。如果Da_User 是指针,这可能是个问题 BabyGau 您好,谢谢您的回答:D 我编辑了帖子,试图将数据库的所有字母都用英文写,以便您更好地理解......我还尝试添加您的建议(includekey Da_User ) 但它不起作用......用户当前帖子没有出现的时间...... : (((( 我认为您的查询没有任何问题。我对[query orderByDescending:FF_CREATEDAT]; 这一行表示怀疑,其中FF_CREATEDAT 可能与POST 类中的键createdAt 不匹配。 ArrayforPostFFTableView 的数据源??? It ArrayforPost 是 Tableview 中使用的 NSMutableArray ...。如果我删除这一行 [QueryForFriend whereKey: @"To_User" equalTo: [PFUser currentUser]];因此,我还查看了用户当前的时间问题是,如果我删除此行,当前用户会看到该应用程序的所有订阅者的帖子,这不好,因为它应该像往常一样只阅读他朋友的帖子社交网络...添加此行帖子被过滤并仅显示朋友的帖子,但似乎帖子没有出现 CurrentUser 【参考方案1】:

经过与@rory 的长时间讨论,我们得出了正确答案:

-(void)QueryForPost 

PFQuery *QueryForFriend=[PFQuery queryWithClassName:@"Amicizie"]; 
[QueryForFriend whereKey:@"A_User" equalTo:[PFUser currentUser]]; 
[QueryForFriend whereKey:@"STATO" equalTo:@"Confermato"]; 
[QueryForFriend includeKey:@"Da_User"]; 

PFQuery *QueryYES = [PFQuery queryWithClassName:@"Post"]; 
[QueryYES whereKey:@"FLASH_POST" equalTo:[NSNumber numberWithBool:YES]]; 
[QueryYES whereKey:@"Scelti" equalTo:[PFUser currentUser]]; 

PFQuery *normalPostByFriends = [PFQuery queryWithClassName: @"Post"]; 
[normalPostByFriends whereKey: @"FLASH_POST" equalTo: [NSNumber numberWithBool: NO]]; 
[normalPostByFriends whereKey: @"Utente" matchesKey:@"Da_User" inQuery:QueryForFriend]; 

PFQuery *normalPostByUser = [PFQuery queryWithClassName:@"Post"]; 
[normalPostByUser whereKey: @"FLASH_POST" equalTo: [NSNumber numberWithBool: NO]]; 
[normalPostByUser whereKey: @"Utente" equalTo: [PFUser currentUser]];

PFQuery *query = [PFQuery orQueryWithSubqueries:@[QueryYES,normalPostByFriends,normalPostByUser  ]];
[query includeKey:@"Author"];

[query orderByDescending:FF_CREATEDAT];
[query findObjectsInBackgroundWithBlock:^(NSArray *results, NSError *error) 
    if (!error) 
        NSLog(@"%@", results);
        ArrayforPost = [[NSMutableArray alloc] init];
        for (PFObject *object in results) 
            [ArrayforPost addObject:object];
        
        [self.FFTableView reloadData];
    
];


通过另一个查询来显示当前用户的正常帖子并修改QueryForFriend以获得正确的查询

【讨论】:

再次感谢您提供的一切,您总是非常乐于助人和友善!

以上是关于Parse.com 查询 PFUser CurrentUser的主要内容,如果未能解决你的问题,请参考以下文章

facebook 登录是不是要求我在我的应用程序中使用 PFUser(使用 parse.com)?

解析查询不显示结果

尝试访问 PFUser 子类的动态属性时出错

Parse.com 用户在离线时注销

离线 Parse.com 时如何在 localdatastore 中保存图像 PFFile?

如何使用 MasterKey 增加不是 currentUser 的 PFUser 分数?