манипуляции со строками и методы в obj-c - PullRequest
0 голосов
/ 30 апреля 2011

Я очень новичок в obj-c (около 1 дня), и я прочитал документацию о том, как вызывать методы и как изменять строки, и я использовал подобный код в другой программе, и он работал нормально. Я программирую простой веб-браузер для iphone, чтобы научить себя библиотеке WebViewController. Когда я компилирую это, он выдает мне предупреждение «WebViewController» может не отвечать на «-parseURl:» в строке 17 в файле .m, и когда я его запускаю, я выдаю ошибку «NSInvalidArgumentException» в консоль.

Код для этого в WebViewController.h:

#import <UIKit/UIKit.h>


@interface WebViewController : UIViewController {

    IBOutlet UIWebView *webView;
    IBOutlet UITextField *textField;
}

NSString *urlAddress;
NSURL *url;
NSURLRequest *requestObj;

- (IBAction)gotoAddress:(id)sender;
- (NSString*) parseURL:(NSString*)str;

@property (nonatomic, retain) UIWebView *webView;

@end

Код для этого в WebViewController.m:

#import "WebViewController.h"


@implementation WebViewController

@synthesize webView;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
        // Initialization code
    }
    return self;
}

- (IBAction)gotoAddress:(id)sender {
    urlAddress = textField.text;
    urlAddress = [self parseURl:urlAddress];
    url = [NSURL URLWithString:urlAddress];
    requestObj = [NSURLRequest requestWithURL:url];
    [webView loadRequest:requestObj];
    NSLog(@"urlAddress= %s", [urlAddress cStringUsingEncoding:1]);
}


- (NSString*) parseURL:(NSString*)str {
    NSLog(@"made it");
    NSString *httpPart = @"http://";
    if ([str rangeOfString:httpPart].location == NSNotFound) {
        NSString *correctURL = [NSString stringWithFormat:@"%@%@", httpPart, str];
        return correctURL;
    }
    else {
        return str;
    }
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning]; // Releases the view if it doesn't have a superview
    // Release anything that's not essential, such as cached data
}


- (void)dealloc {
    [webView release];
    [super dealloc];
}


@end

Спасибо за помощь

1 Ответ

2 голосов
/ 01 мая 2011

Objective-C (и большинство других языков) чувствителен к регистру.«URL» и «URl» различаются.

urlAddress = [self parseURl:urlAddress];

должно быть

urlAddress = [self parseURL:urlAddress];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...