2017-09-12 3 views
8

私のパースサーバーに照会しようとしていますが、私は100%がこのクラスにオブジェクトを持っていることを知っていますが、0の戻り値を得ています。何かご意見は?PFQuery FindObjectsInBackground返す0

私のコンソールに0個のオブジェクトを正常に取得できたというエラーはありません。

+0

cachePolicy行を削除しようとしましたか? – jaynp

+0

はい、変更はありません@jaynp – user717452

+0

最も簡単な例は何ですか?たとえば、 'whereKey'と' orderBy'も削除してみてください。別のクラス名で試してください。これは問題を特定するのに役立ちます。 – jaynp

答えて

1

他が既に示唆したように、私は最初に、最も単純なクエリのだろう。それはエラーなしで実行された場合

PFQuery *query = [PFQuery queryWithClassName:@"General"]; 
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 
if (!error) { 
    NSLog(@"Successfully retrieved %lu objects.", (unsigned long)objects.count); 
} else { 
     NSLog(@"Error: %@ %@", error, [error userInfo]); 
    } 
}]; 

は、0のオブジェクトを返し、ダッシュボードが返されるべきオブジェクト、クラスがあることを示しています名前は間違っている必要があります。クラス名を再度確認してください。スペル。

オブジェクトが返された場合は、フィルタが間違っている必要があります。 forは、2つの理由から間違っています:
1)forループはfollows.count回実行されますが、indexは使用されないため、常に同じ命令を実行します。あなただけの単一のフィルタwhereKey:containedIn:を持つことができるので、これは間違っている)

for (i = 0; i < [follows count]; i++) { 
     [query whereKey:@"Session" containedIn:follows[i]]; 
} 

2私は(これも間違っている)あなたが書きたかったことを推測します。 DevKyleに言及されているように、この単一のフィルタは、follows.count-1 - 回に上書きされ、最後のフィルタのみが使用されます。
私はあなたが個々のフィルターの論理和のようなものを持っていたと思います。
最後の一つのアイデア:あなたの場合はそうならば、あなたは、あなたの配列をフラット化しなければならなかったすなわちhereして、単一のフィルタを設定し

[query whereKey:@"Session" containedIn: flattenedFollows]; 

EDITを参照してください、follows[i]内のすべての要素の単一のアレイNSArray *flattenedFollowsを作りますクエリは正しいです(forループのほかに)とにかくオブジェクトが返されない場合、それらにアクセスする権利がない可能性があります。ですから、これらのレコードのACLフィールドに正しいアクセス権があることを確認してください。

+0

クラス名は問題ありません。フィルターはうまくいきました。何も言及していないので、フィルターなしで試してみました。この完全一致コードは、PFQueryTableViewController内の別の場所で問題なく使用されています。デリゲートが設定されているにもかかわらず、通常のUIViewControllerで問題を使用している可能性があります。 – user717452