2011-06-27 67 views
-2

我有一個頁面在空白頁面上顯示一個字符串。我需要檢索該字符串。如果我想同時和異步地做到這一點,我該怎麼做? (如果有人給我同步和異步的方法名稱,我將不勝感激)。NSData /從頁面檢索內容

謝謝

+0

這看起來像你自己的問題的副本:http://stackoverflow.com/questions/6491066/multithreading-and-json-nsurlconnection-on-the-iphone – 2011-06-27 10:15:43

+0

@Bavarious這是完全不同的。我在這裏詢問具體問題的具體問題。這個問題是關於一般方法的問題。我不想把兩者結合在一起,使它混亂。此外,分離問題可以讓那些遇到同樣問題的人更容易找到答案。 – darksky

+1

你用[tag:nsurlconnection]標記了你的問題,所以你必須已經在正確的地方尋找。您是否遇到該課程的某些特定問題,或者您是否想要從服務器下載數據的一般教程? – Caleb

回答

0

看一看的NSURLConnection參考。你想要的方法就在那裏。另外,閱讀URL Loading guide,它有一些同步和異步加載的代碼示例。

repsonse的身體數據將是你想要的字符串。您需要小心網站使用的編碼。如果完全沒有在響應中指定,它將是ISO-8859-1,否則它可能會在響應的Content-Type標頭中指定。然後,您需要使用initWithData將數據轉換爲NSString:編碼:

注意,如果您不在主線程中,可以使用NSStering的stringWithContentsOfURL:usedEncoding:error:。你不應該在主線程中使用它,因爲它是一種同步方法。

+0

謝謝@JeremyP。對我知道那個。我一直在使用NSURLConnection。不過,我只用JSON和RSS源來使用它。我一直在尋找一種方法來獲取頁面內容。如果我「獲取數據」,並且頁面只有一個字符串(在空白頁面上),那麼NSData實際上是由該字符串組成的嗎?如果是這樣,我怎樣才能將該字符串提取到NSString中? – darksky

+0

@Nayefc:是的。請參閱編輯 – JeremyP

1

您可以使用NSStringstringWithContentsOfURL:encoding:error:方法同步獲取HTML頁面,稍後使用NSXMLParser解析它。

由於stringWithContentsOfURL:encoding:error:是一個阻塞調用,您應該將其放入一個方法中並使用performSelectorInBackground:withObject:調用該方法。這將在後臺檢索HTML頁面。

一旦你有字符串,創建一個NSXMLParser的實例並獲取字符串。這一個是異步過程。

幾個關於如何使用NSXMLParser - Make NSXMLParser your friendBNR - Parsing XML in Cocoa的例子。