Парсер iPhone NSXML для логического значения - PullRequest
0 голосов
/ 23 июня 2011

Я работаю над определением, является ли событие живым, читая из файла XML http://www.calvaryccm.com/ServiceTimes.asmx/IsServiceTime.

Возвращает логический результат, но я не могу понять, как получить к нему доступ, используя target-c. Это то, что я до сих пор:

NSError * error = nil;
NSString * responseString = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://www.calvaryccm.com/ServiceTimes.asmx/IsServiceTime"] encoding:NSUTF8StringEncoding error:&error];
NSLog(responseString);
if (error) {
    NSLog(@"%@", [error localizedDescription]);
}

if ([responseString isEqualToString:@"true"]) {
    // Handle active content.
    NSString *baseVideoUrl = @"http://streaming5.calvaryccm.com:1935/live/iPhone/playlist.m3u8";
    NSLog(@" finalUrl is : %@",baseVideoUrl);

    MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:baseVideoUrl]];

    if ([moviePlayer respondsToSelector:@selector(setFullscreen:animated:)]) {  
        // Use the 3.2 style API  
        moviePlayer.controlStyle = MPMovieControlStyleDefault;  
        moviePlayer.shouldAutoplay = YES;  
        [self.view addSubview:moviePlayer.view];  
        [moviePlayer setFullscreen:YES animated:YES];  
    }

} else {
    // Inform user that the content is unavailable
    UIAlertView *alert = [[UIAlertView alloc]
                          initWithTitle: @"Live Service"
                          message: @"There is no service going on at this time"
                          delegate: nil
                          cancelButtonTitle:@"OK"
                          otherButtonTitles:nil];
    [alert show];
    [alert release];
}

1 Ответ

1 голос
/ 24 июня 2011

Во-первых, ваше утверждение NSLog должно быть:

NSLog(@"%@", responseString); 

Это правильно выведет строку ответа, затем вы получите это значение обратно (я только что попробовал):

<?xml version="1.0" encoding="utf-8"?>
<boolean xmlns="http://tempuri.org/">false</boolean>

Ваш ответ String не равен true, потому что это полностью определенное представление XML String. Вам нужно либо искать строку, вы можете сделать это, если она содержит текст «true» или «false».

NSRange range = [responseString rangeOfString : @"true"];

if (range.location != NSNotFound) {
    //String contained true
}

В качестве альтернативы вы можете использовать облегченное решение XML, такое как GDataXMLNode

...