NSData وNSURL - رابط مع مشكلة وجود مساحة
سؤال
ولقد البرمجية التالية في طلبي.
NSData *data=[NSData dataWithContentsOfURL:[NSURL URLWithString:pathOfThumbNail]];
وpathOfThumbNail ديه التالية مسار
http://70.84.58.40/projects/igolf/TipThumb/GOLF 58B .jpg و
وعندما أفتح فوق المسار في متصفح سفاري - يتم تغيير مسار تلقائيا ويتم عرض الصورة بنجاح
http://70.84.58.40/projects/igolf/TipThumb/GOLF٪ 2058B.jpg
ولكن في اي فون، نظرا لمساحة في المسار، لم يتم تحميل الصورة في nsdata.
المحلول
استخدم: stringByAddingPercentEscapesUsingEncoding:
وإرجاع تمثيل المتلقي باستخدام ترميز معين لتحديد النسبة المئوية يهرب من الضروري تحويل المتلقي في سلسلة URL القانونية.
-(NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)encoding
وتمثيل من المتلقي باستخدام ترميز لتحديد النسبة المئوية يهرب من الضروري تحويل المتلقي في سلسلة URL القانونية. عوائد النيل إذا الترميز لا يمكن ترميز حرف معين
وأضاف في طلبrule
NSString* urlText = @"70.84.58.40/projects/igolf/TipThumb/GOLF 58B.jpg";
NSString* urlTextEscaped = [urlText stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString: urlTextEscaped];
NSLog(@"urlText: '%@'", urlText);
NSLog(@"urlTextEscaped: '%@'", urlTextEscaped);
NSLog(@"url: '%@'", url);
وNSLog الإخراج:
urlText: '70.84.58.40/projects/igolf/TipThumb/GOLF 58B.jpg' urlTextEscaped: '70.84.58.40/projects/igolf/TipThumb/GOLF%2058B.jpg' url: '70.84.58.40/projects/igolf/TipThumb/GOLF%2058B.jpg'
نصائح أخرى
ونهج 3.0 سريع (stringByAddingPercentEscapesUsingEncoding وstringByAddingPercentEncodingWithAllowedCharacters يبدو الآن مهملة):
let urlString ="your/url/".addingPercentEncoding( withAllowedCharacters: .urlQueryAllowed)
تم إهمال stringByAddingPercentEscapesUsingEncoding
في دائرة الرقابة الداخلية 9.0، فمن المستحسن استخدام stringByAddingPercentEncodingWithAllowedCharacters
بدلا من ذلك.
وهنا رمز الهدف-C ل> دائرة الرقابة الداخلية 9.0
NSString* urlText = @"70.84.58.40/projects/igolf/TipThumb/GOLF 58B.jpg";
NSString* urlTextEscaped = [urlText stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
NSURL *url = [NSURL URLWithString: urlTextEscaped];
enter code here
NSLog(@"urlText: '%@'", urlText);
NSLog(@"urlTextEscaped: '%@'", urlTextEscaped);
NSLog(@"url: '%@'", url);