通过REST API从Parse检索多个用户并仅使用一个AFNetworking请求

时间:2014-12-02 07:13:20

标签: ios parse-platform afnetworking afnetworking-2

我需要从Parse.comREST APIAFNetworking检索多个用户。我需要使用一个API调用来检索这些用户。

以下代码可以获取一个用户。您会注意到我包含一个objectId,因为我只提取一个用户。我需要修改此代码,以便我可以调用多个objectId's,从而检索多个用户:

//Setup request manager
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

[manager.requestSerializer setValue:ApplicationId forHTTPHeaderField:@"X-Parse-Application-Id"];
[manager.requestSerializer setValue:APIKey forHTTPHeaderField:@"X-Parse-REST-API-Key"];
[manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];

NSDictionary *query = @{@"objectId":@"cbfG5dFJy7"};
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:query
                                                   options:0
                                                     error:&error];
if (!jsonData) {
    NSLog(@"Error: %@", [error localizedDescription]);
}
NSString *dateQueryString = [[NSString alloc] initWithData:jsonData
                                                  encoding:NSUTF8StringEncoding];
NSDictionary *parameters = @{@"where": dateQueryString};

//Perform request
[manager GET:[NSString stringWithFormat:@"%@users", BaseURLString] parameters:parameters
     success:^(AFHTTPRequestOperation *operation, id responseObject) {

         // Handle success
         completion(nil, self.mentors, nil);

     } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
         // Handle failure
         completion(nil, nil, error);
     }];

Parse.com REST API documentation中,它表示您可以执行compound or query来实现此目的,并在GET请求卷曲示例中列出以下内容:

--data-urlencode 'where={"$or":[{"wins":{"$gt":150}},{"wins":{"$lt":5}}]}' \

不幸的是,我不知道如何将其转化为objective-c。这只是在python中的相同示例,如果有帮助:

params = urllib.urlencode({"where":json.dumps({
       "$or": [
         {
           "wins": {
             "$gt": 150
           }
         },
         {
           "wins": {
             "$lt": 5
           }
         }
       ]
     })})

我只需要在objectId's来电中添加多个AFNetworking,并告诉Parse.com我会接受此objectIdobjectId的结果}等等,以便Parse.com将所有这些用户都归还给我。

1 个答案:

答案 0 :(得分:2)

您目前只有一个字典可用于您转换为JSON的查询

NSDictionary *query = @{@"objectId":@"cbfG5dFJy7"};

您显示的示例是具有单个键的字典,其中值是与当前查询类似的字典数组。

@{@"$or":@[ @{@"objectId":@""} , @{@"objectId":@""} ]}

构建此结构后,将其转换为JSON并将其添加到当前的请求中。