0

このjsonから最初の「hls」を取得するにはどうすればよいですか。ソース コードで hls の値を検索して表示しています。しかし、2番目の「hls」を取得します... JSONデータは次のとおりです。

{
"mbsServer": {
    "version": 1,
    "serverTime": 1374519337,
    "status": 2000,
    "subscriptionExpireTime": 1575057600,
    "channel": {
        "id" : 47,
        "name" : "Yurd TV",
        "logo" : "XXXX",
        "screenshot" : "XXXXXXX",
        "packageId" : 0,
        "viewers": 1,
        "access": true,
        "streams" : [
                {
                    "birate" : 200,
                    "hls"  : "XXXXXXXX",
                    "rtsp" : "XXXXXXX"
                },
                {
                    "birate" : 500,
                    "hls"  : "XXXXXXX",
                    "rtsp" : "XXXXXX"
                }
        ]
    }

} }

私のコードは次のとおりです。

@implementation ViewController - (IBAction)play:(id)sender {

NSData *JSONData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:@"XXXXXX"]];

NSObject *json = [JSONData objectFromJSONData];
NSArray *streams = [json valueForKeyPath:@"mbsServer.channel.streams"];
for (NSDictionary *stream in streams)
{

    NSString *str = [[NSString alloc]initWithString:[stream valueForKey:@"hls"]];
    videoURL = [NSURL URLWithString:str];
}    
NSURLRequest *req = [NSURLRequest requestWithURL:videoURL];
[_stream loadRequest:req];

}

4

1 に答える 1

0

問題は for ループです。JSON オブジェクトの [] で示されているように、「streams」には 2 つのストリーム オブジェクトがあり、これは配列であることを意味し、2 つの値が取り込まれます。これらのオブジェクトの両方を反復処理しており、常に 2 番目のオブジェクトを取得しています。オブジェクトを繰り返し処理するのではなく、必要なオブジェクトを手動で選択し、最後の値に自動的に行き詰まるようにします。

これの代わりに:

for (NSDictionary *stream in streams)
{

    NSString *str = [[NSString alloc]initWithString:[stream valueForKey:@"hls"]];
    videoURL = [NSURL URLWithString:str];
}

おそらくこれが必要です:

NSArray *arrayOfStreams = [json valueForKeyPath:@"mbsServer.channel.streams"];
NSDictionary *stream = [arrayOfStreams objectAtIndex:0];
NSString *str = [[NSString alloc]initWithString:[stream valueForKey:@"hls"]];
videoURL = [NSURL URLWithString:str];

役に立った:

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSArray_Class/NSArray.html

于 2013-07-22T19:39:43.607 に答える