EXC_BAD_INSTRUCTION для оператора switch

Я получил отчет о сбое на Crashlytics для EXC_BAD_INSTRUCTION 0x00000000e4043f55 указывая на этот кусок кода. Что он пытается сделать, это получить NSString с методом HTTP для использования в запросе URL.

+ (NSString *)getRequestType:(RequestType)type {
    switch (type) {
        case kRequestTypeGET:
            return @"GET";
        case kRequestTypePOST:
            return @"POST";
        case kRequestTypePUT:
            return @"PUT";
        case kRequestTypeDELETE:
            return @"DELETE";
        case kRequestTypeHEAD:
            return @"HEAD";
        default:
            return nil;
    }
}

Я не могу найти никаких проблем с кодом, любые предложения приветствуются.

ОБНОВЛЕНИЕ 1: Вот определение констант, используемых в операторе switch.

typedef NS_ENUM(NSUInteger, RequestType) {
    kRequestTypeGET,
    kRequestTypePOST,
    kRequestTypePUT,
    kRequestTypeDELETE,
    kRequestTypeHEAD
};

ОБНОВЛЕНИЕ 2: Это упрощенная версия вызова метода +getRequestType:

+ (NSMutableURLRequest *)requestWithURL:(NSString *)url withRequestType:(RequestType)requestType withBody:(NSDictionary *)body withParameters:(NSDictionary *)parameters {

    NSMutableURLRequest *httpRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];

    [httpRequest setHTTPMethod:[self getRequestType:requestType]];

    [httpRequest setTimeoutInterval:kTimeOutPeriod];

    if (parameters != nil) {
        for (NSString *key in [parameters allKeys]) {
            [httpRequest setValue:parameters[key] forHTTPHeaderField:key];
        }
    }

    NSError *error = nil;
    NSData *requestData = body?[NSJSONSerialization dataWithJSONObject:body options:0 error:&error]:nil;
    if (requestData) {
        [httpRequest setHTTPBody:requestData];
        [httpRequest setValue:[NSString stringWithFormat:@"%lu",(unsigned long)[requestData length]] forHTTPHeaderField:@"Content-Length"];
    }

    return httpRequest;
}

0 ответов

Другие вопросы по тегам