iOS開(kāi)發(fā)之基礎(chǔ)篇(9)—— NSURL

版本

Xcode 8.2.1

NSURL簡(jiǎn)介

遇到一個(gè)生詞,管他三七二十一救湖,先百度一下再說(shuō)暖庄。

  • NS——iOS命名規(guī)范倡導(dǎo)一個(gè)類或者方法的開(kāi)頭兩個(gè)或三個(gè)大寫(xiě)字母指代公司或者編碼者的個(gè)人名稱犯眠,或者框架名稱等容易與其他的東西區(qū)別開(kāi)來(lái)的東西谊娇。NS代表的是NeXTSTEP,是Jobs在1985年離開(kāi)水果的時(shí)候創(chuàng)建的公司名稱眶拉。后來(lái)水果在1997年又把這個(gè)公司重新買下來(lái)千埃,里面的一部分東西成為OS X和iOS的一部分。
  • URL——統(tǒng)一資源定位符是對(duì)可以從互聯(lián)網(wǎng)上得到的資源的位置和訪問(wèn)方法的一種簡(jiǎn)潔的表示忆植,是互聯(lián)網(wǎng)上標(biāo)準(zhǔn)資源的地址放可≮司剩互聯(lián)網(wǎng)上的每個(gè)文件都有一個(gè)唯一的URL,它包含的信息指出文件的位置以及瀏覽器應(yīng)該怎么處理它耀里。

當(dāng)然也會(huì)搜索到很多關(guān)于NSURL的博客蜈缤,包括介紹和用法等等。但如果我們還不放心冯挎,不確定他們寫(xiě)的是否完全準(zhǔn)確底哥,怎么辦?來(lái)房官,打開(kāi)Xcode新建一個(gè)NSURL工程叠艳,我們來(lái)看看官方文檔怎么說(shuō)。

  • 方法1:隨便找個(gè).h或者.m文檔輸入NSURL易阳,按option+鼠標(biāo)左擊;
  • 方法2:鼠標(biāo)點(diǎn)擊NSURL吃粒,打開(kāi)Xcode右邊欄潦俺,找到Quick Help(帶問(wèn)號(hào)的那個(gè)圖標(biāo));
  • 方法3:Help–>Documentation And API Reference–>搜索框內(nèi)搜索NSURL徐勃。

通過(guò)以上方法事示,我們得到蘋(píng)果的官方文檔如此描述:

  • NSURL——An NSURL object represents a URL that can potentially contain the location of a resource on a remote server, the path of a local file on disk, or even an arbitrary piece of encoded data.
    (NSURL對(duì)象代表了一個(gè)URL,可能是包含在遠(yuǎn)程服務(wù)器上的資源位置僻肖,本地磁盤上的文件路徑肖爵,甚至任意一段編碼的數(shù)據(jù)。)

好了好了臀脏,了解得差不多了劝堪,下面我們來(lái)總結(jié)一下NSURL的一些概念和性質(zhì):

  1. NSURL是一個(gè)包含了很多請(qǐng)求參數(shù)的類(class)。

  2. NSURL最主要的參數(shù)為URLString字符串地址(如“www.baidu.com”)揉稚。其他請(qǐng)求參數(shù):scheme秒啦、host、port搀玖、user余境、password等等。

  3. NSURL可以是網(wǎng)絡(luò)資源位置灌诅、本地文件路徑或者編碼后的數(shù)據(jù)等等芳来。

NSURL用法示例

int main(int argc, char * argv[]) {

    //通過(guò)一個(gè)URL實(shí)例化一個(gè)NSURL對(duì)象
    NSURL *baiduUrl = [NSURL URLWithString:@"https://www.baidu.com"];

    //向服務(wù)器請(qǐng)求文本
    //百度首頁(yè)的HTML文本
    NSString *baiduHtmlStr = [[NSString alloc]initWithContentsOfURL:baiduUrl
                                                           encoding:NSUTF8StringEncoding
                                                              error:nil];
    NSLog(@">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>baidu HTML string = %@",baiduHtmlStr);

    //保存到本地
    [baiduHtmlStr writeToFile:@"/Users/tailor/Desktop/baidu.html"
                   atomically:YES
                     encoding:NSUTF8StringEncoding
                        error:nil];

    //通過(guò)本地路徑生成NSURL對(duì)象
    NSURL *localUrl = [NSURL fileURLWithPath:@"/Users/tailor/Desktop/baidu.html"];

    //從本地讀取數(shù)據(jù)
    NSString *localStr = [[NSString alloc]initWithContentsOfURL:localUrl
                                                       encoding:NSUTF8StringEncoding
                                                          error:nil];
    NSLog(@">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Local String = %@",localStr);

    //從服務(wù)器請(qǐng)求MP3數(shù)據(jù)(非文本)、圖片
//    NSURL *mp3Url = [NSURL URLWithString:@"算了猜拾,找不到可用的連接o(╯□╰)o"];
    NSURL *imageUrl = [NSURL URLWithString:@"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1488103436194&di=414e9eb226ad165684395e116dab1d9e&imgtype=jpg&src=http%3A%2F%2Fimg0.imgtn.bdimg.com%2Fit%2Fu%3D181280083%2C2434727418%26fm%3D214%26gp%3D0.jpg"];

    //請(qǐng)求二進(jìn)制數(shù)據(jù)
//    NSData *mp3Data = [NSData dataWithContentsOfURL:mp3Url];
    NSData *imageData = [NSData dataWithContentsOfURL:imageUrl];

    //直接寫(xiě)入本地保存
//    [mp3Data writeToFile:@"/Users/tailor/Desktop/song.mp3" atomically:YES];
    [imageData writeToFile:@"/Users/tailor/Desktop/test.jpg" atomically:YES];


    //請(qǐng)求文本(JSON字符串)
    //JSON(JavaScript Object Notation)是一種輕量級(jí)的數(shù)據(jù)交換格式即舌。它基于 ECMAScript 的一個(gè)子集。JSON 采用完全獨(dú)立于語(yǔ)言的文本格式关带,但是也使用了類似于 C 語(yǔ)言家族的習(xí)慣(包括 C侥涵、C++沼撕、 C#牍白、Java卑惜、JavaScript、Perl誓篱、Python 等)嗦明。這些特性使 JSON 成為理想的數(shù)據(jù)交換語(yǔ)言笼沥。易于人閱讀和編寫(xiě),同時(shí)也易于機(jī)器解析和生成(一般用于提升網(wǎng)絡(luò)傳輸速率)娶牌。
    NSString *jsonStr = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"https://www.baidu.com"]
                                                  encoding:NSUTF8StringEncoding
                                                     error:nil];
    NSLog(@">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>jasonStr = %@",jsonStr);
    //轉(zhuǎn)換成為data
    NSData *jsonData = [jsonStr dataUsingEncoding:NSUTF8StringEncoding];
    //把Jason字符串轉(zhuǎn)換成為OC的對(duì)象
    id obj = [NSJSONSerialization JSONObjectWithData:jsonData
                                             options:NSJSONReadingMutableContainers     //解析選項(xiàng)
                                               error:nil];
    NSLog(@">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>obj.class = %@, obj = %@",[obj class],obj);

    //直接使用二進(jìn)制請(qǐng)求文本
    NSData *bookData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"https://www.baidu.com"]];
    //轉(zhuǎn)換成為OC的對(duì)象
    NSMutableDictionary *dic = [NSJSONSerialization JSONObjectWithData:bookData
                                                               options:NSJSONReadingMutableContainers
                                                                 error:nil];
    NSLog(@">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>name = %@",dic[@"List"][0][@"name"]);

}

結(jié)果:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末奔浅,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子诗良,更是在濱河造成了極大的恐慌汹桦,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鉴裹,死亡現(xiàn)場(chǎng)離奇詭異舞骆,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)径荔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門督禽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人总处,你說(shuō)我怎么就攤上這事狈惫。” “怎么了鹦马?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵胧谈,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我菠红,道長(zhǎng)第岖,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任试溯,我火速辦了婚禮蔑滓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘遇绞。我一直安慰自己键袱,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布摹闽。 她就那樣靜靜地躺著蹄咖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪付鹿。 梳的紋絲不亂的頭發(fā)上澜汤,一...
    開(kāi)封第一講書(shū)人閱讀 50,096評(píng)論 1 291
  • 那天蚜迅,我揣著相機(jī)與錄音,去河邊找鬼俊抵。 笑死谁不,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的徽诲。 我是一名探鬼主播刹帕,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼谎替!你這毒婦竟也來(lái)了偷溺?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤钱贯,失蹤者是張志新(化名)和其女友劉穎挫掏,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體秩命,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡砍濒,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了硫麻。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡樊卓,死狀恐怖拿愧,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情碌尔,我是刑警寧澤浇辜,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布,位于F島的核電站唾戚,受9級(jí)特大地震影響柳洋,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜叹坦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一熊镣、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧募书,春花似錦绪囱、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至篮赢,卻和暖如春齿椅,著一層夾襖步出監(jiān)牢的瞬間琉挖,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工涣脚, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留示辈,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓涩澡,卻偏偏與公主長(zhǎng)得像顽耳,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子妙同,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容