0

リモートhtmlを表示してローカル画像を使用するアプリに取り組んでいるので、Webサイトの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

まず、なぜ宣言されappURLていないのですか?彼らは他の場所でこのように宣言されていますか?notConnectedHTMLNSString *

NSURL第二に、 を使用して実際の-urlWithString:relativeToURL:リクエスト URL を作成する方がよい場合があります。

3 番目に (これが実際の問題だと思います)、2 つの C プリミティブを比較するには、==. =は代入演算子です (左側のものを右側のものと等しくします)。-isEqual:2 つの Objective-C オブジェクトを比較するには、 or -isEqualToString:(特に s 用) のような比較メソッドを使用しますNSString

したがって、代わりに:

if (seedString = @"(null)")

使用する必要があります

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

ただし、「(null)」と比較しようとしている理由はNSLog、オブジェクトが に等しいときにそれが吐き出されるためだと思いますnil。オブジェクトがnilの場合、オブジェクト参照自体は定数に等しいためnil、これを使用してオブジェクトが であるかどうかを確認する必要がありますnil

if (seedString == nil)

念のため、まったく同じことを行う次の構文を使用することを好む人もいます。

if (!seedString)
于 2010-05-02T13:24:56.213 に答える