如何使用parse.com服务查询不在数组中的对象(刷新数组)



我有一个表视图,其中填充了一个包含字符串的数组。此数组从parse.com上的云数据库接收数据。它一开始就成功填充。我在视图控制器的底部有一个刷新按钮,用来添加数据库中所有不在数组中的新对象。我试图通过向查询对象发送whereKey:notContainedIn:来实现这一点。但它不会获取任何新对象。这是我的刷新方法代码。我做错了什么?

-(void) refresh {
    PFQuery *query = [PFQuery queryWithClassName:@"Employee"];
    [query whereKey:@"Employee" notContainedIn:currentEmployees]; 
    [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
        if (!error) {
            // The find succeeded.
            NSLog(@"Successfully retrieved %d scores.", objects.count);
            // Do something with the found objects
            for (PFObject *object in objects) {
                NSLog(@"%@", object.objectId);
                [employees addObject:object];
                dispatch_async(dispatch_get_main_queue(), ^ {
                    [hvc.tableView reloadData];
                });
            }
        } else {
            // Log details of the failure
            NSLog(@"Error: %@ %@", error, [error userInfo]);
        }
    }];

edit:它现在正在获取对象,但它正在获取数据库中已经存在的所有内容并再次添加它们。所以如果我有的列表

- dog 
- cat 

然后我在线将bird添加到数据库中,我会得到:

- dog 
- cat 
- dog 
- cat 
- bird

我该怎么解决这个问题?

使用whereKey:notContainedIn:时,key应该是Employee上的字段。如果您遵循命名约定,那么实际提供的是对象名称本身。看起来你提供了一个对象数组。您应该有一个identity字段(或类似的字段),并且应该为whereKey:notContainedIn:提供一个标识数组。您可以通过以下方式获得身份数组:

NSArray *identities = [currentEmployees valueForKey:@"identity"];

(用适当的文件名代替identity

最新更新