预期表达式如果错误

时间:2012-10-04 22:47:33

标签: ios xcode if-statement

这一点很麻烦......

#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

我似乎无法弄清楚如果有问题会导致其他原因。我已经用Google搜索了这个垃圾,并一遍又一遍地检查我的代码,但我似乎无法弄明白这一点!

请帮忙。

3 个答案:

答案 0 :(得分:2)

之前你问了同样的问题,I answered。我重复下面答案的相关部分。如果有些事情没有意义,请在下面留言。


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

无论如何,在下面的示例中,我将假设您的IBOutlet被称为webview,因此我可能会建议删除NSOperationQueueNSUrlConnection并让UIWebView为你加载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编程教程(只是谷歌它,你会获得大量的点击),或者看看Apple App Programming Guide或查看{{3}的精彩资源}。


<强>更新

顺便说一下,如果您坚持使用NSOperationQueueNSUrlConnection,那么您的网络视图仍然需要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要简单得多,但如果你真的想这样做,那就去吧。

答案 1 :(得分:1)

'我正在尝试使用uiwebview来启动网络应用。如果你知道更好的方法,请告诉我!'

[theWebView loadRequest:[NSURLRequest requestWithURL:theURL]];

答案 2 :(得分:1)

您有3种不同的错误。首先“(UIWebView)”并不意味着什么,其次,如果你有一个声明,那确实意味着它需要一个分号。第三,在NSLog之后应该有一个分号(@“错误:%@”,错误)。最好将一些代码放在单独的行上以便于阅读 - 它应该如下所示:

[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发布的方法来使您的代码正常工作。