2012-02-02 19 views
0

所以我一直在努力從Web服務獲取數據,並在我的應用程序使用它(例如顯示一堆一個UITableView名字的)移動連接呼叫...的iOS Web服務:從AppDelegate中

的指南我一直在設置這個,在AppDelegate中設置NSURLConnection,然後有一個XMLParser和一個用於存儲提取數據的對象... 現在,我想要移出連接設置並從AppDelegate並進入它自己的一類...但我對這種方法有點不確定...

我在想:

兒童(對象,用於存儲數據)

ChildParser(的NSXMLParser)

SomeViewController(從解析器接收更新通知,並且使用該數據)

ChildMsg(此處設置的連接和SOAP消息)

好吧,所以在AppDelegate在didFinishLaunchingWithOptions中設置連接和SOAP消息之前......並在connectionDidFinishLoading中初始化ChildParser ...然後在viewController中啓動解析器:

appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 

,然後我可以訪問的子數據對象...

好了,所以我在想什麼是我不應該建立在AppDelegate中的連接,我將有3-4個不同的連接和每個連接的一堆SOAP消息,所以它會很快弄亂AppDelegate類...因此,我想我會爲每個不同的Web服務調用創建一個類然後在我需要它們的時候在viewController中初始化這些類... 但是我該怎麼做呢?

之前我在解析器過這樣的:

- (XMLParser *) initXMLParser { 

    self = [super init]; 

    if(self) 
    { 
     appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
    } 
    return self; 
} 

,我用在AppDelegate中對其進行初始化,所以我猜我需要在ChildMsg

這種散漫的類似的東西可能沒有按沒有道理,但希望你明白我想要達到的目標,並且可以給我一個正確的方向推動...

簡短摘要:我正在解析Web服務的數據,並且我想獲取數據一個的viewController,但我想建立連接和SOAP消息的另一個地方比AppDelegate中..

在此先感謝

回答

0

我建議試圖在這裏遵循MVC(模型 - 視圖 - 控制器)的方法。我認爲你已經很清楚你的視圖和控制器類是什麼;該模型是您可以放置​​您的SOAP/XML代碼(或從您訪問的模型中的類)。

在這種情況下,添加一個伊娃到您的控制器來表示您的模型類。模型類應提供更新其內容(即從Web服務獲取數據)的方法,並檢索控制器製作的單個數據片段,然後將其用於其管理的視圖。然後,模型類將封裝連接/請求處理代碼,並且(可能的話,如果我理解正確的話)還訪問ChildParser以構建Child對象(該視圖將用於顯示其內容)。

這只是事情如何工作的粗略草圖。如果你需要更多關於MVC的信息,你可以看看Wikipedia。希望這可以幫助。