0

我正在开发一个可以显示远程 html 并使用本地图像的应用程序,所以我要做的是下载网站的 HTML 并将其显示为“本地”页面,这样就可以访问图像我的捆绑。

出于某种原因,我无法让 initWithContentsOfURL 工作。我检查了我能找到的所有手册和示例,似乎我做对了,但事情就是行不通,总是返回 null 。加载的同一页面NSURLRequest requestWithURL工作正常。

这是代码:

- (void)awakeFromNib 
{
    appURL = @"http://dragontest.fantasy-fan.org";
    notConnectedHTML = @"Could not connect.";

    NSString *seedString = [[NSString alloc] initWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@/seed.php", appURL]]];

    NSString *HTMLdata = @"";

    if (seedString = @"(null)") {
        NSLog(@"Can't connect on awakeFromNib.");
        HTMLdata = notConnectedHTML;
    }else {
        HTMLdata = [NSString stringWithFormat:@"<body style='padding:0px;margin:0px;'>%@%@</body>", seedString, @"<br><img src='images/Default.png'>"];
    }   
    [homeView loadHTMLString:HTMLdata baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] resourcePath]]];
}
4

1 回答 1

4

首先,为什么不appURLnotConnectedHTML声明为NSString *?他们在其他地方是这样声明的吗?

其次,您最好使用NSURL's-urlWithString:relativeToURL:创建实际的请求 URL。

第三(我怀疑这是你的实际问题),为了比较两个 C 原语,你使用==. =是赋值运算符(它使左边的东西等于右边的东西)。要比较两个 Objective-C 对象,请使用比较方法,例如-isEqual:or -isEqualToString:(专门用于NSStrings)。

所以而不是:

if (seedString = @"(null)")

你应该使用

if ([seedString isEqualToString:@"(null)"])

但是,我怀疑您尝试与“(null)”进行比较的原因是因为NSLog当对象等于nil. 当一个对象是nil时,对象引用本身就等于nil常量,所以你应该使用它来查看一个对象是否是nil

if (seedString == nil)

只是为了更好的衡量,有些人喜欢使用这种语法,它做同样的事情:

if (!seedString)
于 2010-05-02T13:24:56.213 回答