-1

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 内のエントリの量が一貫していないため、最後のエントリを取得するにはどうすればよいでしょうか。インデックスが 0 になるように、JSON が入ってきたときにその順序を逆にする必要がありますか? これについてどうすればいいですか?最後の 2 つの「価格」の数値を取得して比較しようとしていますが、JSON の仕組みは初めてです。ありがとう

4

3 に答える 3

3

あなたのアイテムは配列にあります。メソッドを使用して、配列内のアイテムの数を取得できますcount。カウントしたら、好きなアイテムを手に入れることができます。lastObject最後のアイテムを取得するためのショートカット メソッドでもあります。

    NSDictionary* last = [bitcoinPrices2 lastObject];
    NSDictionary* secondLast = [bitcoinPrices2 objectAtIndex:(bitcoinPrices2.count - 2)];
于 2013-07-27T23:20:31.110 に答える
1

使用できます-lastObject

NSDictionary* latest = [bitcoinPrices2 lastObject];
于 2013-07-27T23:15:21.867 に答える
0

[bitcoinPrice2 count] も使用できます。

if ([bitcoinPrice2 count] > 0)
    NSDictionary *lastItem = [bitcoinPrice2 objectAtIndex:([bitcoinPrice2 count] - 1)];
if ([bitcoinprice2 count] > 1)
    NSDictionary *penultimateItem = [bitcoinPrice2 objectAtIndex:([bitcoinPrice2 count] - 2)];
于 2013-07-27T23:19:56.480 に答える