iOS - загрузите веб-страницу HTML, выполните поиск по содержимому и установите текст для метки на основе результата запроса - PullRequest
2 голосов
/ 20 марта 2012

что я хочу:

Загрузка веб-страницы с сервера> Сохранение содержимого в NSString> Поиск по содержимому с помощью IsEqualToString> Задать текст для метки при обнаружении указанного ключевого слова.

Мне удалось загрузить веб-страницу, показать содержимое в UITextView, но моя функция if всегда выполняет остальную часть, неважно, что я ищу в IsEqualToString. Пожалуйста помоги.

На самом деле я должен видеть на своем ярлыке: Курс открыт и НЕ Жаль, курс закрыт. Смотрите скриншот.

//
//  ViewController.h
//  TestingHTML2
//
//  Created by Marc Woerner on 20.03.12.
//  Copyright (c) 2012 __MyCompanyName__. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController
{
    NSMutableData *myData;
    NSURLConnection *myConnection;
}

@property (strong, nonatomic) IBOutlet UITextView *myTextView;
@property (strong, nonatomic) IBOutlet UILabel *myLabel;

@end

ViewController.m

//
//  ViewController.m
//  TestingHTML2
//
//  Created by Marc Woerner on 20.03.12.
//  Copyright (c) 2012 __MyCompanyName__. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController
@synthesize myTextView;
@synthesize myLabel;


- (void)viewDidLoad
{
    [super viewDidLoad];
    if (myConnection == nil) {
        myData = [NSMutableData new];
        NSString *urlString = [NSString stringWithFormat:@"http://www.golfplatz-altenstadt.de"];
        myConnection =[NSURLConnection connectionWithRequest:
                      [NSURLRequest requestWithURL:
                      [NSURL URLWithString:urlString]] 
                        delegate:self];
    }
}




- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    [myData appendData:data];
}




- (void) initializeVariablesAgain {
    myData = nil;
    myConnection = nil; 
    myTextView = nil;
}




- (void)connectionDidFinishLoading:(NSURLConnection *)connection {

    NSString *stringToLookup = [[NSString alloc]initWithData:myData encoding:NSASCIIStringEncoding];

    if ([stringToLookup isEqualToString:@"platz_bespielbar"]) {
        myLabel.text = @"Course is open";
    } else {
        myLabel.text = @"Sorry, course is closed";
    }

    myTextView.text = [[NSString alloc] initWithData:myData encoding:NSASCIIStringEncoding];

    [self initializeVariablesAgain];
}

Когда я сам просматриваю загруженную веб-страницу, я вижу запись:

platz_bespielbar

Так почему же моя функция не работает?

enter image description here

1 Ответ

4 голосов
/ 20 марта 2012

Это потому, что вы проверяете всю строку, а не только ее часть.

if ([stringToLookup isEqualToString:@"platz_bespielbar"]) {

должно быть

if ([stringToLookup rangeOfString:@"platz_bespielbar"].location != NSNotFound]) {

Надеюсь, это поможет

...