NSURL baseURL gibt es nil zurück. Jeder andere Weg ist, um die tatsächliche Basis-URL
Ich denke, ich don ' T verstehen das Konzept der "baseURL". Diese:
NSLog(@"BASE URL: %@ %@", [NSURL URLWithString:@"http://www.google.es"], [[NSURL URLWithString:@"http://www.google.es"] baseURL]);
Ausdrucke dieser:
BASE URL: http://www.google.es (null)
Und natürlich in der Apple-docs ich lese das so:
Rückgabewert
Die Basis-URL des Empfängers. Wenn der Empfänger ist eine absolute URL, wird nil zurückgegeben.
Ich würde gerne aus dieser Beispiel-URL:
https://www.google.es/search?q=uiviewcontroller&aq=f&oq=uiviewcontroller&sourceid=chrome&ie=UTF-8
Diese Basis-URL
Meine Frage ist einfach. Gibt es eine bessere Möglichkeit des Erhaltens von der eigentlichen Basis-URL ohne Verkettung von dem Schema und hostname? Ich meine, was ist der Zweck der Basis-URL dann?
- Was für ein Ergebnis genau suchst du?
- Sorry, ich vergaß zu erwähnen: ich möchte von dieser URL, zum Beispiel: google.es/..., um die "Basis-URL" - Teil -> google.es
Du musst angemeldet sein, um einen Kommentar abzugeben.
-baseURL
ist ein Konzept, das rein vonNSURL/CFURL
anstatt URLs im Allgemeinen. Wenn Sie dies getan haben:dann
baseURL
wärehttps://www.google.es/
. In kurzen,baseURL
wird nur aufgefüllt, wenn derNSURL
erstellt mit einer Methode, die explizit geht in eine Basis-URL. Der Hauptzweck dieser Funktion ist die Auswertung der relativen URL-Zeichenfolgen, wie könnte gefunden werden in der Quelle von einer typischen web-Seite.Was Sie nach stattdessen nehmen Sie eine beliebige URL ein und Band ihn wieder zu, nur den host-Teil. Der einfachste Weg, ich weiß, dies zu tun ist ein wenig list:
Diese geben einen
hostURL
vonhttps://www.google.es/
Habe ich eine Methode veröffentlicht, wie
-[NSURL ks_hostURL]
als Teil KSFileUtilities (Blättern Sie in der readme zu finden, der es dokumentierte)Wenn Sie möchten, dass Reine host-und nicht so etwas wie scheme/port usw. dann
-[NSURL host]
ist Ihre Methode.Docs für BaseURL.
Scheint, es funktioniert nur für relative URLs.
Könnte man vielleicht nutzen ...
nehmen und dann die bits, die Sie möchten.
Oder versuchen...
pathComponents
wird nur zur Zersetzung despath
, so kann man nicht nehmen Sie die baseURL von dort aus (Sie können, aber die Strategie wird ähnlich sein und komplexer als mitpath
einfach). Auchhost
wird weglassen das URL-Schema (http://
zum Beispiel)Könnte es nur mich, aber wenn ich daran denke, weiter über die Doppel-URL-Lösung, es klingt wie etwas, das könnte aufhören zu arbeiten zwischen OS-updates. Also habe ich beschlossen, zu teilen noch eine andere Lösung, definitiv nicht schön, aber ich finde es besser lesbar durch die öffentlichkeit, da es sich nicht auf irgendwelche versteckten Besonderheiten in der framework.
Hier ist eine schnelle, einfache und sichere Möglichkeit zum abrufen der Basis-URL: