es mag sehr einfach sein, aber ich scheine nicht herauszufinden, warum URLWithString:
hier nichts zurückkommt.
//localisationName is a arbitrary string here
NSString* webName = [localisationName stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString* stringURL = [NSString stringWithFormat:@"http://maps.google.com/maps/geo?q=%@,Montréal,Communauté-Urbaine-de-Montréal,Québec,Canadae&output=csv&oe=utf8&sensor=false&key=", webName];
NSURL* url = [NSURL URLWithString:stringURL];
webName
vor Ihrem Anruf beistringWithFormat:
? Was ist dann der WertstringURL
vor Ihrem Anruf beiURLWithString:
? Verwenden SieNSLog()
diese Option , um sie Schritt für Schritt auszudrucken, oder legen Sie Haltepunkte fest und überprüfen Sie die festgelegten Werte.Antworten:
Sie müssen auch die Nicht-ASCII-Zeichen in Ihrer fest codierten URL maskieren:
Sie können wahrscheinlich das Escapezeichen des localisationName entfernen, da es durch das Escapezeichen der gesamten Zeichenfolge behandelt wird.
quelle
stringByAddingPercentEscapesUsingEncoding
konvertiert # in% 2webStringURL = [stringURL stringByAddingPercentEncodingWithAllowedCharacters:NSCharacterSet.URLQueryAllowedCharacterSet];
Verwenden Sie diese Funktion, wenn Sie mit Dateien arbeiten, die im Dateimanager gespeichert sind.
quelle
Ich denke, Sie müssen verwenden
-[NSString stringByAddingPercentEscapesUsingEncoding:]
. Siehe Apple-Dokument .Ein weiterer Kommentar ist, dass es mir als Oldtimer etwas unangenehm ist, Nicht-ASCII-Zeichen in eine Quelldatei einzufügen. In diesem Apple-Dokument heißt es jedoch, dass ab 10.4 UTF-16-Zeichenfolgen im Inneren in Ordnung sind
@"..."
. Irgendwie scheint GCC die Quelldatei in Latin-1 korrekt in UTF-16 in der Binärdatei zu konvertieren, aber ich denke, es ist am sichersten, 7-Bit-ASCII-Zeichen nur innerhalb des Quellcodes zu verwenden und zu verwendenNSLocalizedString
.quelle
Ich denke, deine akzentuierten Charaktere werfen Dinge ab; Sie werden nicht von -stringByAddingPercentEscapesUsingEncoding: verarbeitet.
quelle
NSURL URLWithString: @ "" gibt null zurück, wenn die URL nicht RFC 2396 entspricht und sie maskiert werden müssen
Wenn Sie rfc2396 im Link durchlesen , erhalten Sie viele Details
Eine großartige Seite, die ich gefunden habe, um zu überprüfen, wo sich das beleidigende Zeichen befindet. Wählen Sie die Pfadoption für die URL
http://www.websitedev.de/temp/rfc2396-check.html.gz
quelle
Der Aufruf von URLWithString: gibt eine Null zurück, wenn die an ihn übergebene Zeichenfolge fehlerhaft ist. Da NSURL für fehlerhafte URLs null zurückgibt, protokollieren Sie Ihre Zeichenfolge und setzen Sie Haltepunkte, um genau zu sehen, was an Ihre NSURL-Erstellungsmethode übergeben wird. Wenn Ihr URLWithString mit einem fest codierten Wert arbeitet, ist dies ein weiterer Beweis dafür, dass alles, was Sie übergeben, fehlerhaft ist. sehen
quelle
Sie können NSURL direkt ohne NSString verwenden.
//.h Datei
//.m Datei
Und ich übergebe die URL von einer anderen Ansicht (unter Verwendung der NewsUrl-Variablen) an diese Ansicht.
Versuch es.
quelle