質問
私のデータベースからいくつかのオブジェクトを解析しようとしています。私はParse.comをWebサービスとして使用しています。 次のコードは、4つのクエリに基づいていくつかのオブジェクト、それらのうちの2つが複合であることを示します。
変数「meetingage」はindexageまたは "6"に等しくなければなりません 変数「MeetingSex」は「SEX」または「2」に等しくなければなりません。 変数「ISAVAITABLE」は、はいと等しくなければなりません。 変数「著者」はuser.username
と異なる必要があります。基本的には、2つか条件と2と条件でクエリを実装しようとしています。
次のコードは私に間違った結果、そのようなものはありません。私はそれが構文の問題であると確信していますが、これを正しく書き留める方法を理解することはできません。私は1つの複合クエリを使用してから2とクエリを追加するだけですが、正しい結果が得られますが、1フィルタが表示されます。
PFQuery *queryAge1 = [PFQuery queryWithClassName:@"MeetingObject"];
[queryAge1 whereKey:@"meetingAge" equalTo:indexAge ];
PFQuery *queryAge2 = [PFQuery queryWithClassName:@"MeetingObject"];
[queryAge2 whereKey:@"meetingAge" equalTo:@"6"];
PFQuery *queryCompound = [PFQuery orQueryWithSubqueries:@[queryAge1,queryAge2]];
PFQuery *querySex1 = [PFQuery queryWithClassName:@"MeetingObject"];
[querySex1 whereKey:@"meetingSex" equalTo:user[@"sex"]];
PFQuery *querySex2 = [PFQuery queryWithClassName:@"MeetingObject"];
[querySex2 whereKey:@"meetingSex" equalTo:@"2"];
queryCompound = [PFQuery orQueryWithSubqueries:@[querySex1,querySex2]];
[queryCompound whereKey:@"isAvaiable" equalTo:[NSNumber numberWithBool:YES]];
[queryCompound whereKey:@"author" notEqualTo:user.username];
[queryCompound findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
}
. 解決
あなたの行に... queryCompound = [PFQuery orQueryWithSubqueries:@[querySex1,querySex2]];
あなたはすべての年齢のものを無視して真新しいクエリを作成しています。
編集
これを過大複写しています。
これをこのようにすることができます...
PFQuery *query = [PFQuery queryWithClassName:@"MeetingObject"];
[query whereKey:@"meetingAge" containedIn:@[@"6", indexAge]];
[query whereKey:@"meetingSex" containedIn:@[@"2", user[@"sex"]]];
[query whereKey:@"isAvaiable" equalTo:[NSNumber numberWithBool:YES]];
[query whereKey:@"author" notEqualTo:user.username];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
}
.
これはあなたが探しているすべてのオプションを捕まえます。
また、クイックノートのように。変数名を選択してより読みやすくなります。それらがすべてquery
で始まるなら、それを区別するのは難しいです。それらを説明的にします。queryAge1
とqueryAge2
は、しているものを理解しやすくなります。