Objective-C: initWithContentsOfURL, возвращающий нуль
Я работаю над приложением, которое будет отображать удаленный HTML и использовать локальные изображения, поэтому я пытаюсь загрузить HTML-код веб-сайта и отобразить его как "локальную" страницу, которая будет иметь доступ к изображениям в моя связка
Почему-то я не могу заставить initWithContentsOfURL работать. Я проверил все руководства и примеры, которые смог найти, и кажется, что я делаю это правильно, но эта вещь просто не работает, все время возвращает ноль. Та же страница загружена 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]]];
}
1 ответ
Во-первых, почему нет appURL
а также notConnectedHTML
объявлен как NSString *
? Они объявлены таким образом в другом месте?
Во-вторых, вам лучше использовать NSURL
"s -urlWithString:relativeToURL:
создать фактический URL запроса.
В-третьих (и это ваша настоящая проблема, я подозреваю), чтобы сравнить два примитива C, вы используете ==
, =
является оператором присваивания (он делает вещь слева равной вещи справа). Чтобы сравнить два объекта Objective C, используйте метод сравнения, такой как -isEqual:
или же -isEqualToString:
(который специально для NSString
с).
Так что вместо:
if (seedString = @"(null)")
Вы должны использовать
if ([seedString isEqualToString:@"(null)"])
Однако я подозреваю, что причина, по которой вы пытаетесь сравнить с "(null)", заключается в том, что NSLog
выплевывает, когда объект равен nil
, Когда объект nil
сама ссылка на объект равна nil
константа, поэтому вы должны использовать это, чтобы увидеть, является ли объект nil
:
if (seedString == nil)
Просто для примера, некоторые люди любят использовать этот синтаксис, который делает то же самое:
if (!seedString)