0

我有一个表格视图,其中填充了一个包含字符串的数组。该数组从 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]);
        }
    }];

编辑:它现在正在获取对象,但它正在获取数据库中已经存在的所有内容并再次添加它们。所以如果我有一份清单

- dog 
- cat 

我在线将鸟添加到数据库中,我会得到:

- dog 
- cat 
- dog 
- cat 
- bird

我怎样才能解决这个问题?

4

1 回答 1

0

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

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

(用适当的文件名代替identity

于 2013-06-27T19:57:08.187 回答