ios [NSURL URLWithString: requestUrllativeToURL: baseUrl]. если requestUrl содержит строку '/ User / Page', вернуть nil - PullRequest
0 голосов
/ 23 октября 2019
[NSURL URLWithString:requestUrl relativeToURL:baseUrl]

, если requestUrl содержит '/ User / page', вернуть nil.

image:

Если вы хотите выполнить тест.

NSString *reqUrl1 = @"/api/v3.1/User​/Page/";

NSString *reqUrl2 = @"api/v3.1/User​/Page";

NSString *reqUrl3 = @"/api/v3.1/User​/Page/";

NSString *reqUrl4 = @"/api/v3.1/Follow/Page";

NSString *reqUrl5 = @"/api/v3.1/User/Follow";

NSString *reqUrl6 = @"/api/v3.1/User/Pollow";

NSString *reqUrl7 = @"api/v3.2/User​/Page";

NSString *reqUrl8 = @"api/v3.2/User​/Page/aaa/bbb";

NSURL *url = [NSURL URLWithString:@"http://appgateway.xxx.xx-xxx.xxx.com/"];

NSString *lastUrl1 = [NSURL URLWithString:reqUrl1 relativeToURL:url].absoluteString;

NSString *lastUrl2 = [NSURL URLWithString:reqUrl2 relativeToURL:url].absoluteString;

NSString *lastUrl3 = [NSURL URLWithString:reqUrl3 relativeToURL:url].absoluteString;

NSString *lastUrl4 = [NSURL URLWithString:reqUrl4 relativeToURL:url].absoluteString;

NSString *lastUrl5 = [NSURL URLWithString:reqUrl5 relativeToURL:url].absoluteString;

NSString *lastUrl6 = [NSURL URLWithString:reqUrl6 relativeToURL:url].absoluteString;

NSString *lastUrl7 = [NSURL URLWithString:reqUrl7 relativeToURL:url].absoluteString;

NSString *lastUrl8 = [NSURL URLWithString:reqUrl8 relativeToURL:url].absoluteString;

NSLog(@"============");

// ------------------------------------------------------

(lldb) po lastUrl1

 nil

(lldb) po lastUrl2

 nil

(lldb) po lastUrl3

 nil

(lldb) po lastUrl4

http://appgateway.xxx.xx-xxx.xxx.com/api/v3.1/Follow/Page

(lldb) po lastUrl5

http://appgateway.xxx.xx-xxx.xxx.com/api/v3.1/User/Follow

(lldb) po lastUrl6

http://appgateway.xxx.xx-xxx.xxx.com/api/v3.1/User/Pollow

(lldb) po lastUrl7

 nil

(lldb) po lastUrl8

 nil

1 Ответ

0 голосов
/ 24 октября 2019

@ Ларм. Извините, с моим примером что-то не так. Третий пример изменен на «/api/v3.1/user/page». Это не правда.

Следуйте вашему коду. Печать как

Ошибка: http://appgateway.xxx.xx -xxx.xxx.com / + /api/v3.1/user/page Успешное выполнение: http://appgateway.xxx.xx -xxx.xxx. com / api / v3.1 / follow / page

Но я обнаружил проблему, перебирая символы.

for (NSString *aRequestURL in requestURLs) {
        for(int i=0; i<aRequestURL.length; i++){
            unichar ch = [aRequestURL characterAtIndex: i];
            printf("%hu", ch);
        }
        NSLog(@"%@", aRequestURL);
}

Между 'есть странный символ' 8203 '/ user 'и' / page '. Большое спасибо за код. Это расширило мое мышление

Но я не знаю, почему «8203» влияет на генерацию URL

...