鍍金池/ 教程/ C/ Objective-C URL加載系統(tǒng)
Objective-C 多態(tài)性
Objective-C 預(yù)處理器
Objective-C for循環(huán)
Objective-C 開發(fā)環(huán)境(安裝配置)
Obj-C Foundation/基礎(chǔ)框架
Objective-C 指針運(yùn)算
Objective-C 循環(huán)
Objective-C 錯(cuò)誤處理
Objective-C while循環(huán)
Objective-C if語句
Objective-C do...while循環(huán)
Objective-C教程
Objective-C 嵌套switch語句
Objective-C 函數(shù)按值調(diào)用
Objective-C 常量
Objective-C 運(yùn)算符
Objective-C 數(shù)據(jù)類型
Objective-C 邏輯運(yùn)算符
Objective-C 數(shù)組作為函數(shù)參數(shù)傳遞
Objective-C struct/結(jié)構(gòu)
Objective-C 嵌套循環(huán)
Objective-C 函數(shù)引用調(diào)用
Objective-C 日志處理
Objective-C 數(shù)據(jù)存儲(chǔ)
Objective-C 教程首頁
Objective-C 擴(kuò)展
Objective-C 異常處理
Objective-C 類型轉(zhuǎn)換
Objective-C 嵌套 if 語句
Objective-C typedef
Objective-C 決策
Objective-C 指針的數(shù)組
Objective-C Protocols/協(xié)議
Objective-C 日期和時(shí)間
Objective-C 指針
Objective-C 內(nèi)存管理
命令行參數(shù)
Objective-C NSString/字符串
Objective-C 動(dòng)態(tài)綁定
Objective-C 復(fù)合對(duì)象
Objective-C Arrays/數(shù)組
Objective-C 位運(yùn)算符
Objective-C 指向指針的指針
Objective-C 從函數(shù)返回?cái)?shù)組
Objective-C Posing/冒充
Objective-C Categories/類別
Objective-C 文件處理
Objective-C 賦值運(yùn)算符
Objective-C 函數(shù)返回指針
Objective-C if...else 語句
Objective-C switch語句
Objective-C URL加載系統(tǒng)
Objective-C 算術(shù)運(yùn)算符
Objective-C Numbers/數(shù)字
Objective-C語言程序結(jié)構(gòu)
Objective-C 快速枚舉
Objective-C 基本語法
Objective-C 類&對(duì)象
Objective-C 變量
Objective-C 關(guān)系運(yùn)算符
Objective-C 塊
Objective-C break語句
Objective-C continue語句
Objective-C 語言概述
Objective C 文本和字符串
Objective-C 函數(shù)
Objective-C 傳遞函數(shù)的指針
Objective-C 數(shù)組的指針
Objective-C 多維數(shù)組
Objective-C 繼承
Objective-C 數(shù)據(jù)封裝

Objective-C URL加載系統(tǒng)

要訪問互聯(lián)網(wǎng)的URL,即項(xiàng)目是有用的URL加載。它提供的下面的類的幫助:

  • NSMutableURLRequest

  • NSURLConnection

  • NSURLCache

  • NSURLAuthenticationChallenge

  • NSURLCredential

  • NSURLProtectionSpace

  • NSURLResponse

  • NSURLDownload

  • NSURLSession

下面是一個(gè)簡單的URL加載的例子。這是不能在命令行中運(yùn)行。我們需要?jiǎng)?chuàng)建Cocoa應(yīng)用程序。

這可以通過選擇新,然后在XCode項(xiàng)目下的OS X應(yīng)用程序部分出現(xiàn)的窗口中選擇Cocoa應(yīng)用程序。

完成步驟的順序點(diǎn)擊下一步,會(huì)被要求提供一個(gè)項(xiàng)目名稱,給它一個(gè)名字。

appdelegate.h 文件內(nèi)容如下:

#import <Cocoa/Cocoa.h>

@interface AppDelegate : NSObject <NSApplicationDelegate>

@property (assign) IBOutlet NSWindow *window;

@end

更新以下AppDelegate.m文件:

#import "AppDelegate.h"

@interface SampleClass:NSObject<NSURLConnectionDelegate>
{
    NSMutableData *_responseData;
}
- (void)initiateURLConnection;

@end


@implementation SampleClass

- (void)initiateURLConnection
{
    // Create the request.
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://date.jsontest.com"]];
    
    // Create url connection and fire request
    NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self];
    [conn start];
}
#pragma mark NSURLConnection Delegate Methods

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
    // A response has been received, this is where we initialize the instance var you created
    // so that we can append data to it in the didReceiveData method
    // Furthermore, this method is called each time there is a redirect so reinitializing it
    // also serves to clear it
    _responseData = [[NSMutableData alloc] init];
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    // Append the new data to the instance variable you declared
    [_responseData appendData:data];
}

- (NSCachedURLResponse *)connection:(NSURLConnection *)connection
                  willCacheResponse:(NSCachedURLResponse*)cachedResponse {
    // Return nil to indicate not necessary to store a cached response for this connection
    return nil;
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    // The request is complete and data has been received
    // You can parse the stuff in your instance variable now
    NSLog(@"%@",[[NSString alloc]initWithData:_responseData encoding:NSUTF8StringEncoding]);
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
    // The request has failed for some reason!
    // Check the error var
}

@end

@implementation AppDelegate

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    SampleClass *sampleClass = [[SampleClass alloc]init];
    [sampleClass initiateURLConnection];
    // Insert code here to initialize your application
}
@end

現(xiàn)在,當(dāng)我們編譯并運(yùn)行程序,我們會(huì)得到以下的結(jié)果。

2013-09-29 16:50:31.953 NSURLConnectionSample[1444:303] {
   "time": "11:20:31 AM",
   "milliseconds_since_epoch": 1380453631948,
   "date": "09-29-2013"
}

在上述程序中,我們已經(jīng)創(chuàng)建了一個(gè)簡單的JSON格式的,帶有時(shí)間和顯示時(shí)間的URL連接。