Этот URL содержит несколько символов, которые необходимо экранировать. Это абсолютно не так, как работают URL, и поэтому метод initWithString
не работает и возвращает NULL ...
В большинстве случаев я сталкивался с ситуацией, в которой мне нужно было экранировать URL-адрес метода stringByAddingPercentEscapesUsingEncoding
было более чем достаточно, так как это были относительно короткие URL. Тем не менее, ваш URL-адрес содержит много символов, которые этот метод не особенно нравится. (Это включает в себя sla sh /
и амперсанд &
).
Для этого конкретного сценария, вероятно, следующий подход даст лучшие результаты при сохранении его простоты.
NSString* unencodedURLString = @"https://localhost/odata/Venues?$expand=Fixtures($filter=day(DateTime) eq 9 and month(DateTime) eq 3 and year(DateTime) eq 2020)&$filter=Fixtures/any(f: day(f/DateTime) eq 9 and month(f/DateTime) eq 3 and year(f/DateTime) eq 2020)";
NSString* urlString = [unencodedURLString stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
Пожалуйста, дайте нам знать, если это сработало для вас ...