2012-05-09 34 views
1

我是iOS編程新手,想要在我設計的iPad應用程序中顯示股票報價和股票詳細信息。我正在尋找兩個選擇我在看谷歌財務或雅虎財務。正在下載股票報價至應用程序

我該如何去發送一個url請求到他們的網站,然後在Xcode中處理回覆?

我看到雅虎有一個YQL服務,但我無法將我的頭圍繞如何讓它工作,儘管在網上閱讀了一些雅虎文檔,所以我希望避免它。我曾看過谷歌API,但我不知道如何整合它,並得到它要求的股票細節。我已經決定通過url請求路由並嘗試組成一些基本代碼來處理來自url請求的回覆,因爲這看起來像是最簡單的選項(儘管我不知道在搜索股票時這將如何工作) 。

回答

2

只是刪除了我的全部答案,並重寫了它,以避免混淆:

我看着如何使用YQL查詢雅虎財經API和這裏就是我結束了:

下面是完整的代碼充分制定請求字符串。你可以直接將這個引入到一個NSMutableURLRequest的NSURL中,並且會得到一個json響應。此代碼將獲取每個股票的每個屬性。要改變這一點,你需要在前綴中選擇單個屬性而不是*這個位(選擇%20 *%20)。 我參考了this post中的示例代碼。我修改了代碼以適應異步請求(也改成了略微因爲它的一部分似乎已經過時,不能正常工作

#define QUOTE_QUERY_PREFIX @"http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(" 
#define QUOTE_QUERY_SUFFIX @")%0A%09%09&env=http%3A%2F%2Fdatatables.org%2Falltables.env&format=json" 

+ (NSString *)formulateYQLRequestFor:(NSArray *)tickers 
{ 
    NSMutableString *query = [[NSMutableString alloc] init]; 
    [query appendString:QUOTE_QUERY_PREFIX]; 
    for (int i = 0; i < [tickers count]; i++) 
    { 
     NSString *ticker = [tickers objectAtIndex:i]; 
     [query appendFormat:@"%%22%@%%22", ticker]; 
     if (i != [tickers count] - 1) 
     { 
      [query appendString:@"%2C"]; 
     } 
    } 
    [query appendString:QUOTE_QUERY_SUFFIX]; 

    return query; 
} 

你會做類似調用此:

NSArray *tickerArray = [[NSArray alloc] initWithObjects:@"AAPL", @"VZ", nil]; 
NSString *queryURL = [MyClass formulateYQLRequestFor:tickerArray]; 

使用this answer看看如何制定的要求並消耗回來的JSON。 基本上你需要改變的部分是

NSURL *url = [NSURL URLWithString:queryURL]; 

您也沒有發送JSON,因此您應該更改請求以反映該問題。