Как общий комментарий, отладка будет намного проще, если вы разделите вызовы вложенных методов и сделаете быстрый NSLog, чтобы увидеть, что происходит. (Я не так хорош в этом, чтобы не критиковать).
Первое, что я заметил, было использование «% f» для отображения длины, попробуйте использовать% i (целое число), и вы сможете получить правильную длину. % f всегда будет отображать 0,00000.
Какой URL вы используете? учитывая, что вы извлекаете данные из заголовков, строка «x» может присутствовать или не присутствовать в поле. Я хотел бы предложить NSLoging объект NSString *, который вы извлекаете из словаря, и проверять, что происходит. Например: NSString * cookie = @ "http://www.google.com/";
NSHTTPCookieStorage *store = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSURL *url = [NSURL URLWithString:cookie];
NSDictionary *header = [NSHTTPCookie requestHeaderFieldsWithCookies: [store cookiesForURL:url]];
NSString *cookieParameter = [header objectForKey:@"Cookie"];
NSLog(@"Cookie param is %@", cookieParameter);
// Test range of "x"
NSRange range = [cookieParameter rangeOfString:@"x"];
NSLog(@"%f", range.length); // will print out 0.00000
NSLog(@"%i", range.length); // will print out correct length (always 1 for "x")
NSLog(@"%i", range.location); // will print out the location of the first instance of "x"
if (range.length >= 1) {
NSLog(@"Do Something");
} else {
NSLog(@"AUTHING");
}
Кажется, что код просто определяет индекс строки "x" из того, что я могу сказать, это ожидаемый результат?