0

好的,所以我正在尝试获取 webView 的当前 URL,以便我可以解析它并隔离一个数字。但是,变量 _webURL 没有使用 URL 设置。URL 未使用以下命令打印到日志,为什么?:

初始显示的实现:

@synthesize adWebView1;
@synthesize webURL = _webURL;

...

- (void)viewDidLoad
{
    [adWebView1 loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://m.web.org/bannercontroller.php"]]];

    _webURL = adWebView1.request.URL.absoluteString;
    NSLog(@"The Current URL is", _webURL);

    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
}

- (void)viewDidUnload
{
    adWebView1 = nil;
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

我将其修改为:

- (void)viewDidLoad
{
    [adWebView1 loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://m.web.org/bannercontroller.php"]]];

    NSString *rawURL = [adWebView1 stringByEvaluatingJavaScriptFromString:@"location.href;"];

    NSLog(@"Das URL ist", *rawURL);
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
}

正在产生以下错误:

无法通过 veriadic 函数按值传递接口类型为“NSString”的对象。

4

1 回答 1

0

您使用请求来创建 webview,但从那里它将不再使用该请求,因此它可能不会更新请求对象。

该请求将在您创建 web 视图时启动。它不会等到请求完成,因此您可能需要检查请求是否仍在运行。

要稍后获取 url,您可以使用:

NSString *rawLocationString = [adWebView1 stringByEvaluatingJavaScriptFromString:@"location.href;"];

我不确定它是否已经在viewDidLoad.

顺便说一句:你不应该打电话给URL.absoluteString. 虽然它在技术上可能有效,但它是不正确的。absoluteString 是一种方法而不是属性,因此您不应像访问它那样访问它。

于 2012-09-23T20:49:57.303 回答