ইউআরএলউইথ স্ট্রিং: শূন্য দেয়


93

এটি খুব সহজ হতে পারে তবে আমি কেন URLWithString:এখানে শূন্য ফিরে আসছি তা খুঁজে বের করার মতো মনে হচ্ছে না ।

//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];

4
webNameআপনার কল করার আগে মূল্য কী stringWithFormat:? তাহলে, stringURLআপনার কল করার আগে মূল্য কী URLWithString:? NSLog()সেগুলি ধাপে ধাপে মুদ্রণের জন্য ব্যবহার করুন , বা ব্রেকপয়েন্টগুলি সেট করুন এবং সেগুলি নির্ধারিত হিসাবে মানগুলি পরীক্ষা করুন।
কেভিন কনার

উত্তর:


202

আপনার হার্ডকোডযুক্ত ইউআরএল-এ অ-ASCII অক্ষরগুলি এড়াতে হবে:

//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", webName];
NSString* webStringURL = [stringURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL* url = [NSURL URLWithString:webStringURL];

আপনি সম্ভবত স্থানীয়করণের নামটি পাল্টে ফেলতে পারেন যেহেতু এটি পুরো স্ট্রিংয়ের প্রস্থান দ্বারা পরিচালিত হবে।


এখানে ইউআরএলউইথ স্ট্রিং কেন শূন্য করছে তা বোঝার চেষ্টা করছেন। অ্যাপল ডক্স বলেছে যে "অবশ্যই একটি ইউআরএল হওয়া উচিত যা আরএফসি 2396 এর সাথে সামঞ্জস্যপূর্ণ। এই পদ্ধতিটি আরএফসি 1738 এবং 1808 অনুসারে ইউআরএল স্ট্রিংকে পার্স করে।" কিছু পঠন করছেন ...
রাউসাউ

4
LOL, আমি একটি ইমেল থেকে একটি URL অনুলিপি করেছি এবং এটি ঘটেছে! ধন্যবাদ
এচেলন

4
URL টিতে # টি থাকলে ব্রেক হয়। stringByAddingPercentEscapesUsingEncoding21% এ 21%
আলী

4
উপরের এপিআই হ্রাস করা হয়। আপনি নিম্নলিখিত API টি ব্যবহার করতে পারেন webStringURL = [stringURL stringByAddingPercentEncodingWithAllowedCharacters:NSCharacterSet.URLQueryAllowedCharacterSet];
রুশভ

41

আপনি যদি ফাইল ম্যানেজারে সেভ করা ফাইল নিয়ে কাজ করেন তবে এই ফাংশনটি ব্যবহার করুন।

NSURL *_url = [NSURL fileURLWithPath:path];

ধন্যবাদ! আমি
13'30 এ

8

আমার ধারণা আপনার ব্যবহার করা দরকার -[NSString stringByAddingPercentEscapesUsingEncoding:]অ্যাপল ডক দেখুন ।

অন্য মন্তব্যটি হ'ল, একজন পুরানো টাইমার হিসাবে, উত্স ফাইলে অ-এসসিআইআই অক্ষর স্থাপন করা আমার কাছে কিছুটা অস্বস্তিযুক্ত মনে হয়। এটি বলেছিল, এই অ্যাপল ডকটি বলেছেন, 10.4 থেকে শুরু করে, ইউটিএফ -16 স্ট্রিংগুলি ভিতরে ঠিক আছে @"..."। কোনওভাবে জিসিসি বাইনারিতে ল্যাটিন -১ এর উত্স ফাইলটিকে ইউটিএফ -16 তে সঠিকভাবে রূপান্তরিত করেছে বলে মনে হয়, তবে আমি মনে করি কেবল উত্স কোডের মধ্যে 7-বিট ASCII অক্ষর ব্যবহার করা এবং ব্যবহার করা সবচেয়ে নিরাপদ NSLocalizedString


2

আমার মনে হয় আপনার উচ্চারণযুক্ত চরিত্রগুলি জিনিসগুলি ফেলে দিচ্ছে; এগুলিকে স্ট্রিংবাইএডিংপ্রিপারেন্টসস্কেপস ইউজিং এনকোডিং দ্বারা পরিচালনা করা হবে না।


2

এনএসআরএল ইউআরএলউইউথ স্ট্রিং: @ "" URL টি আরএফসি 2396 অনুসারে মেনে না নিলে এবং সেগুলি পালাতে হবে

আপনি লিঙ্কটিতে rfc2396 এর মাধ্যমে পড়তে পারলে বিশদ বিবরণ পাবেন

আপত্তিজনক চরিত্রটি কোথায় তা যাচাই করার জন্য আমি একটি দুর্দান্ত সাইট পেয়েছি, ইউআরএল এর জন্য পথের বিকল্পটি চয়ন করুন

http://www.websitedev.de/temp/rfc2396-check.html.gz


0

ইউআরএলউইথস্ট্রিং: স্ট্রিংটিতে স্ট্রিংটি ত্রুটিযুক্ত হয়ে থাকলে কলটি শূন্য করবে। যেহেতু এনএসআরএলটি ত্রুটিযুক্ত url গুলির জন্য শূন্য করে, আপনার স্ট্রিংটি এনএসলোগ করুন এবং আপনার এনএসআরএল তৈরির পদ্ধতিতে ঠিক কী পাস হচ্ছে তা দেখার জন্য ব্রেকপয়েন্টগুলি সেট করুন। যদি আপনার ইউআরএলউইথ স্ট্রিং একটি হার্ড কোডড মান নিয়ে কাজ করে তবে এটি আরও প্রমাণ যে আপনি যা যা করছেন তা ত্রুটিযুক্ত। দেখা


-1

আপনি সরাসরি এনএসএসআরটিং ছাড়াই এনএসআরএল ব্যবহার করতে পারেন।

//.h ফাইল

@interface NewsBrowser : UIViewController {

    UIWebView *webView;
    NSURL *NewsUrl;

}

@property (nonatomic, retain) IBOutlet UIWebView *webView;

@property(nonatomic,assign)NSURL *NewsUrl;

@end

//.m ফাইল

[webView loadRequest:[NSURLRequest requestWithURL:NewsUrl]];

এবং আমি এই ভিউতে অন্য ভিউ (নিউজআরএল ভেরিয়েবল ব্যবহার করে) থেকে URL টি পাস করি।

চেষ্টা করে দেখুন


এই উত্তরটিতে কোনও প্রশ্নের সমাধান করা হয়নি, যা ইউআরএলউইথ স্ট্রিং: কেন শূন্য ছিল? (আরও, আপনি কোনও ইউআরএল স্ট্রিং পরিবর্তন করার কোনও
মাধ্যমও দেখান নি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.