0

文字列を保持している配列が取り込まれているテーブル ビューがあります。この配列は、parse.com のクラウド データベースからデータを受け取ります。最初は正常に入力されます。View Controller の下部に、まだ配列にないデータベース内のすべての新しいオブジェクトを追加することになっている更新ボタンがあります。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であり、ID の配列を に提供する必要がありますwhereKey:notContainedIn:。ID の配列は次の方法で取得できます。

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

( を適切なファイル名に置き換えますidentity)

于 2013-06-27T19:57:08.187 に答える