Как вернуть массив местоположений для PINCode в качестве входного параметра с блоком завершения кода?

У меня есть сценарий, в котором пользователь вводит номер PINCode и тот номер, который я должен передать в качестве параметра в API веб-сервисов (пользователь, который является одноэлементным классом), тогда я получу массив местоположений в качестве ответа и тот ответ, который я должен показать в Lable ниже текстового поля PINCode. Итак, что я понял, я должен создать метод с блоком завершения в этом методе. но я сомневаюсь, как можно получить массив мест для представления в метке. Я очень запутался, и я попробовал это

API.h

+(void)submitPINCode:(NSInteger *)pinCode CompletionBlock:(void(^)(BOOL status, NSArray * responseArray))handler;

API.m

+(void)submitPINCode:(NSInteger *)pinCode CompletionBlock:(void(^)(BOOL, NSArray *))handler

{

    NSString *string = [NSString stringWithFormat:@"%@%@",URL,pinCode];
    NSURL *url = [NSURL URLWithString:string];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];


    AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];

    operation.responseSerializer = [AFJSONResponseSerializer serializer];

    operation.responseSerializer = [AFXMLParserResponseSerializer serializer];

    [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {

        BOOL status = NO;
        if (operation.response.statusCode == kStatusCodeSuccessfullResponse) {
            status = YES;
            //  here we have to send an array so make the response object in to array or create a response Dictionary as you wish

            NSArray *responseArray = (NSDictionary *)responseObject;

        }

        handler(status,BfErrorCodeUnknownError, responseArray);


    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSInteger statusCode = operation.response.statusCode;
        BfErrorCode errorCode = BfErrorCodeUnknownError;
        if (statusCode == kStatusCodeNoInternetConnection) {
            errorCode = BfErrorCodeNetworkError;
        }

        NSString *errorMessage = [NSString stringWithBfErrorCode:errorCode];

        handler(NO,errorCode,nil); // here if nil is doesnt work just pass an empty array instead of nil create an array and pass it
    }];

//    [operation start];

}

Поэтому я сомневаюсь:

1) Я иду по правильному пути или какие изменения я должен сделать, чтобы получить ответ, и

2) Я должен создать метод класса или метод экземпляра? Где я должен создать класс и методы экземпляра в целом для подобных ситуаций?

1 ответ

Решение

Может быть, это может помочь вам:

API.h

typedef NS_ENUM (NSInteger, WebServiceResult)
{
    WebServiceResultSuccess = 0,
    WebServiceResultFail,
    WebServiceResultError
};
typedef void(^myCompletionA)(NSDictionary *data,WebServiceResult result);
+(void)postDataDict:(NSInteger *)pinCode isLoding:(BOOL)loading WithBlock:(myCompletionA)compileBlock;

API.m

+(void)postDataDict:(NSInteger *)pinCode isLoding:(BOOL)loading WithBlock:(myCompletionA)compileBlock{
    if ([objAppDelegate connected]) {
        if (loading) {
            [SVProgressHUD showWithMaskType:SVProgressHUDMaskTypeNone];
        }

        NSString *urlString=[[NSString stringWithFormat:@"%@%@",BASE_URL,pinCode] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

        AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
       // manager.requestSerializer = [AFJSONResponseSerializer serializer];
        //manager.responseSerializer = [AFXMLParserResponseSerializer serializer];
        [manager POST:urlString parameters:dict success:^(AFHTTPRequestOperation *operation, id responseObject) {
            [SVProgressHUD dismiss];
//            NSLog(@"Response : %@",responseObject);
            if ([responseObject[@"status"] isEqualToString:@"success"])
            {
                compileBlock(responseObject,WebServiceResultSuccess);
            }
            else
            {
                compileBlock(responseObject,WebServiceResultFail);
            }

        } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
            NSDictionary *errorDict=[[NSDictionary alloc]initWithObjectsAndKeys:error,@"error", nil];
            compileBlock(errorDict,WebServiceResultError);
            NSLog(@"%@",error.description);
            [SVProgressHUD dismiss];
        } ];
    }
    else
    {
        [objAppDelegate showMessage:@"No internet connection." withTitle:@"nil"];
    }
}
Другие вопросы по тегам