Ini mungkin sangat mudah, tapi sepertinya saya tidak tahu mengapa URLWithString:
mengembalikan nol di sini.
//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
sebelum Anda meneleponstringWithFormat:
? Lalu, apa nilaistringURL
sebelum panggilan AndaURLWithString:
? GunakanNSLog()
untuk mencetaknya selangkah demi selangkah, atau, setel breakpoint dan periksa nilai saat ditetapkan.Jawaban:
Anda juga harus melepaskan karakter non-ASCII di URL hardcode Anda:
Anda mungkin dapat menghapus pelolosan dari localisationName karena ini akan ditangani oleh pelolosan seluruh string.
sumber
stringByAddingPercentEscapesUsingEncoding
mengubah # menjadi% 2webStringURL = [stringURL stringByAddingPercentEncodingWithAllowedCharacters:NSCharacterSet.URLQueryAllowedCharacterSet];
Gunakan Fungsi Ini jika Anda berurusan dengan file yang disimpan di manajer file.
sumber
Saya kira Anda perlu menggunakan
-[NSString stringByAddingPercentEscapesUsingEncoding:]
. Lihat dokumen Apple .Komentar lain adalah, sebagai pengatur waktu lama, saya merasa agak tidak nyaman untuk meletakkan karakter non-ASCII di file sumber. Yang mengatakan, dokumen Apple ini mengatakan, mulai dari 10.4, string UTF-16 baik-baik saja di dalamnya
@"..."
. Entah bagaimana GCC tampaknya dengan benar mengubah file sumber dalam bahasa Latin-1 menjadi UTF-16 dalam biner, tetapi saya pikir paling aman menggunakan karakter ASCII 7-bit hanya di dalam kode sumber, dan digunakanNSLocalizedString
.sumber
Saya pikir karakter beraksen Anda membuang banyak hal; mereka tidak akan ditangani oleh -stringByAddingPercentEscapesUsingEncoding :.
sumber
NSURL URLWithString: @ "" akan mengembalikan nihil jika URL tidak sesuai dengan RFC 2396 dan harus di-escape
Jika Anda membaca rfc2396 di tautan, Anda akan mendapatkan banyak detail
Situs hebat yang saya temukan untuk memeriksa di mana karakter yang menyinggung berada, pilih opsi jalur untuk URL
http://www.websitedev.de/temp/rfc2396-check.html.gz
sumber
Panggilan URLWithString: akan mengembalikan nil jika string yang diteruskan ke itu dalam format yang salah. Karena NSURL mengembalikan nol untuk url yang salah format, NSLog string Anda dan setel breakpoint untuk melihat dengan tepat apa yang sedang diteruskan ke metode pembuatan NSURL Anda. Jika URLWithString Anda berfungsi dengan nilai hard code, itu adalah bukti lebih lanjut bahwa apa pun yang Anda sampaikan memiliki format yang salah. Lihat
sumber
Anda dapat menggunakan NSURL secara langsung tanpa NSString.
//.h file
//.m file
Dan saya meneruskan URL dari tampilan lain (menggunakan variabel NewsUrl) ke tampilan ini.
Cobalah.
sumber