我正在开发一个可以显示远程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]]];
}
答案 0 :(得分:4)
首先,为什么appURL
和notConnectedHTML
没有声明为NSString *
?他们是否在其他地方宣布过这种方式?
其次,您最好使用NSURL
的{{1}}来创建实际的请求网址。
第三(我怀疑这是你的实际问题),为了比较两个C原语,你使用-urlWithString:relativeToURL:
。 ==
是赋值运算符(它使左边的东西等于右边的东西)。要比较两个Objective-C对象,请使用比较方法,例如=
或-isEqual:
(专门用于-isEqualToString:
s)。
所以而不是:
NSString
你应该使用
if (seedString = @"(null)")
但是我怀疑你试图与“(null)”进行比较的原因是因为当对象等于if ([seedString isEqualToString:@"(null)"])
时,NSLog
吐出的是nil
。当对象为nil
时,对象引用本身等于nil
常量,因此您应该使用它来查看对象是否为nil
:
if (seedString == nil)
只是为了衡量,有些人喜欢使用这种语法完全相同:
if (!seedString)