2014-12-07 137 views
0

这里是我试图解析JSON:http://query.yahooapis.com/v1/public/yql?q=select%20Name,LastTradePriceOnly%20from%20yahoo.finance.quotes%20where%20symbol%20in%20( 'YHOO', 'AAPL', '歌', 'MSFT')&格式= JSON & ENV =商店%3A%2F %2Fdatatables.org%2Falltableswithkeys &回调=解析嵌套JSON在RestKit为iOS

(我不能让它在这里正确格式化所以这就是为什么我提供了一个链接。)

{ 

    "query": { 
     "count": 4, 
     "created": "2014-12-08T02:46:32Z", 
     "lang": "en-US", 
     "results": { 
      "quote": [ 
       { 
        "LastTradePriceOnly": "50.99", 
        "Name": "Yahoo! Inc." 
       }, 
       { 
        "LastTradePriceOnly": "115.00", 
        "Name": "Apple Inc." 
       }, 
       { 
        "LastTradePriceOnly": "525.26", 
        "Name": "Google Inc." 
       }, 
       { 
        "LastTradePriceOnly": "48.42", 
        "Name": "Microsoft Corpora" 
       } 
      ] 
     } 
    } 

} 

我希望得到来自信息“报价”部分,但我不知道如何下到那里。

这里是我的代码:

func getSampleStocksFromYahoo(query:String, successBlock:StocksResponseSuccessBlock, failureBlock:StocksResponseFailureBlock){ 

    let url = NSURL(string:query) 

    let urlRequest = NSURLRequest(URL: url!) 


    var stockMapping:RKObjectMapping = RKObjectMapping(forClass:Stock.self) 
     stockMapping.addAttributeMappingsFromDictionary(["Name":"name"]) 

    var rDescriptor:RKResponseDescriptor = RKResponseDescriptor(mapping: stockMapping, method: RKRequestMethod.GET, pathPattern: nil, keyPath: nil, statusCodes: nil) 

    var request:RKObjectRequestOperation = RKObjectRequestOperation(request: urlRequest, responseDescriptors: [rDescriptor]) 

    request.setCompletionBlockWithSuccess(successBlock, failure: failureBlock) 
    request.start() 


} 

如何设置我的映射,因此启动“引用”部分?

+0

您提供的XML文件链接是由于某种原因缺少一些参数。 – 2014-12-07 23:55:25

+0

嗨肖恩,一半的链接是不可点击的。如果你可以复制并粘贴整个网址,它就会起作用。 – dhint4 2014-12-07 23:57:44

+0

哇。对不起,让我看看一切都很快。我想我忘了突出显示最后一个回调部分。 – 2014-12-07 23:59:49

回答

0

对不起,我花了这么长时间后,因为我不在做什么。你说一个客观的答案会很好,而不是Swift,所以你在这里!

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://query.yahooapis.com/v1/public/yql?q=select%20Name,LastTradePriceOnly%20from%20yahoo.finance.quotes%20where%20symbol%20in%20('YHOO','AAPL','GOOG','MSFT')&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback="]]; 
[NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler: ^(NSURLResponse *response, NSData *data, NSError *connectionError) 
{ 
    NSHTTPURLResponse *httpUrlResponse = (NSHTTPURLResponse*) response; 
    if (!connectionError && httpUrlResponse.statusCode == 200) 
    { 
     NSError *jsonError = nil; 
     NSDictionary *responseDictionary = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&jsonError]; 
     if (!jsonError) 
     { 
      NSArray *quotes = [[[responseDictionary objectForKey:@"query"] objectForKey:@"results"] objectForKey:@"quote"]; 

      for (int index = 0; index < quotes.count; index++) 
      { 
       NSDictionary *quoteInformation = [quotes objectAtIndex:index]; 
       NSLog(@"Name: %@", [quoteInformation objectForKey:@"Name"]); 
       NSLog(@"LastTradePriceOnly: %@", [quoteInformation objectForKey:@"LastTradePriceOnly"]); 
      } 
     } 
    } 
}]; 
+0

即使这不是我正在寻找的,因为此代码不涉及RestKit,但此解决方案非常完美可以接受的。我自己测试了代码,它完美地工作。谢谢Sean – dhint4 2014-12-08 02:56:12

+0

没问题,如果你愿意,我可以制作一个RestKit版本。 – 2014-12-08 03:46:18

+0

如果您有时间并且不介意这样做,那将会非常美妙,我会非常感谢您的时间和精力! :-) – dhint4 2014-12-08 03:47:47