-1

这个有点麻烦....

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
//1
NSString *urlString = @"http://zaphod_beeblebrox.pythonanywhere.com/";
//2
NSURL *url = [NSURL URLWithString:urlString];
//3
NSURLRequest *request = [NSURLRequest requestWithURL:url];
//4
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
//5
[NSURLConnection sendAsynchronousRequest:request queue:queue
                       completionHandler:^(NSURLResponse *response, NSData *data, NSError         *error) {
                           if ([data length] > 0 && error == nil) (UIWebView)
                        else if ((error != nil) NSLog(@"Error: %@", error))}];

}@end

如果出现问题,我似乎无法弄清楚是什么原因造成的。我已经用谷歌搜索了这个废话,并一遍又一遍地检查了我的代码,但我似乎无法弄清楚这一点!

请帮忙。

4

3 回答 3

2

你之前问过同样的问题,我回答了。我在下面重复该答案的相关部分。如果有什么不明白的地方,请在下面发表评论。


我猜您正在尝试在 ? 中加载 html 页面UIWebView?你显然需要一个IBOutlet你的UIWebView. (如果您不熟悉IBOutlet,请查看 Apple 教程Your First iOS App。)

无论如何,在下面的示例中,我将假设您的IBOutlet被称为webview,因此我可能会建议您摆脱NSOperationQueueandNSUrlConnectionUIWebView为您加载 html:

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSString     *urlString = @"http://zaphod_beeblebrox.pythonanywhere.com/";
    NSURL        *url       = [NSURL URLWithString:urlString];
    NSURLRequest *request   = [NSURLRequest requestWithURL:url];

    [self.webview loadRequest:request];
}

阅读一些 iPhone 编程教程可能也值得一读(只需 google 一下,您就会获得大量点击),或者查看 Apple App Programming Guide或查看http://developer.apple.com上的精彩资源.


更新:

顺便说一句,如果你坚持使用NSOperationQueueand NSUrlConnection,你的 webview 仍然需要一个IBOutlet。但是修改后的代码看起来像:

NSString         *urlString = @"http://zaphod_beeblebrox.pythonanywhere.com/";
NSURL            *url       = [NSURL URLWithString:urlString];
NSURLRequest     *request   = [NSURLRequest requestWithURL:url];
NSOperationQueue *queue     = [[NSOperationQueue alloc] init];

[NSURLConnection sendAsynchronousRequest:request
                                   queue:queue
                       completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
                           if ([data length] > 0 && error == nil)
                           {
                               NSString *htmlString = [NSString stringWithUTF8String:data.bytes];
                               [self.webview loadHTMLString:htmlString baseURL:url];
                           }
                           else if (error != nil)
                           {
                               NSLog(@"Error: %@", error);
                           }
                           else
                           {
                               NSLog(@"No data returned");
                           }
                       }];

我认为loadRequest要简单得多,但是如果您真的想这样做,那就去吧。

于 2012-10-04T23:13:52.250 回答
1

' 我正在尝试使用 uiwebview 来调出 Web 应用程序。如果您知道任何更好的方法,请告诉我!

[theWebView loadRequest:[NSURLRequest requestWithURL:theURL]];
于 2012-10-04T23:08:32.863 回答
1

您有 3 个不同的错误。首先“(UIWebView)”没有任何意义,其次,如果你有一个声明确实意味着某些东西,那么它后面需要一个分号。第三,NSLog(@"Error: %@", error) 后面应该有一个分号。为了便于阅读,最好将一些代码放在单独的行中——它应该如下所示:

[NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
    if ([data length] > 0 && error == nil)
        ;//a valid expression here with a semicolon at the end
    else if (error != nil)
        NSLog(@"Error: %@", error);
 }];

话虽如此,您应该使用@Rob 发布的方法来使您的代码正常工作。

于 2012-10-04T23:09:24.390 回答