反向JSON订单或获取iOS的最后两个条目

时间:2013-07-27 23:13:06

标签: ios json

我正在尝试在我的JSON http://data.mtgox.com/api/1/BTCUSD/trades/fetch中获取最新更新的条目,但不幸的是,最新更新的条目显示在底部而不是JSON列表的顶部。这是我的代码

- (void)fetchedlatestData:(NSData *)responseData {
    NSError* error;
    NSDictionary* json = [NSJSONSerialization
                          JSONObjectWithData:responseData //1
                          options:kNilOptions
                          error:&error];


    NSArray* bitcoinPrices2 = [json objectForKey:@"return"]; //2

    //Get the Last Price
    NSDictionary* latest = [bitcoinPrices2 objectAtIndex:0];
    NSDictionary* latestPrice = [latest objectForKey:@"price"];



    NSLog(@"Data: %@", latestPrice);

通过使用objectAtIndex:0我可以获得第一个条目,但是如何获取最后一个条目,因为索引号不一致,并且JSON中的条目数量不是一致的数字。当它进来时我是否需要反转JSON的顺序以使索引为0?我该怎么做?我试图得到最后两个“价格”数字来比较它们,我是JSON如何工作的新手。感谢

3 个答案:

答案 0 :(得分:3)

您的商品位于数组中。您可以使用count方法获取数组中的项目数。计算完成后,您可以获得所需的任何项目。 lastObject也是获取最后一项的快捷方式。

    NSDictionary* last = [bitcoinPrices2 lastObject];
    NSDictionary* secondLast = [bitcoinPrices2 objectAtIndex:(bitcoinPrices2.count - 2)];

答案 1 :(得分:1)

您可以使用-lastObject

NSDictionary* latest = [bitcoinPrices2 lastObject];

答案 2 :(得分:0)

您也可以使用[bitcoinPrice2计数]。

if ([bitcoinPrice2 count] > 0)
    NSDictionary *lastItem = [bitcoinPrice2 objectAtIndex:([bitcoinPrice2 count] - 1)];
if ([bitcoinprice2 count] > 1)
    NSDictionary *penultimateItem = [bitcoinPrice2 objectAtIndex:([bitcoinPrice2 count] - 2)];