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)
Другие вопросы по тегам