0

Web サーバーに保存されているテキスト ファイルを読み取り、その内容をテキスト ビューで表示する方法を考えようとしていました。NSURLConnection と receiveData を確立し、受信したデータを表示する方法について、Apple Web サイトNSURLConnectionのドキュメントに従いました。

ボタンのクリック時にテキスト ビューをロードするボタンを作成しました。そのために私はこのメソッドを書きました

- (void)loadWeb:(BOOL)animated
{
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://nowayweb.com/mytext.txt"] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:30.0];

    NSURLConnection *myConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];

    if (myConnection) {
        downloadedData = [[NSMutableData data] retain];
    }
    else{

        NSLog(@"Error");
    }
}

しかし、次のスクリーンショットに示すように、.m ファイルに警告が表示されます。 警告のスクリーンショット

正常に動作し、テキスト ビューでテキストを表示できますが、どこで間違いを犯しているのか疑問に思っています。誰かがこれに光を当てると、役に立ちます。

または、ボタンをクリックして Web からコンテンツをロードするより良い方法があります。どんな助けでも大歓迎です。

ありがとう

4

2 に答える 2

0

ObjCBOOLは実際のブール型ではありません。の typedef ですsigned char

メソッドのシグネチャは次のとおりです。

- (void)loadWeb:(BOOL)animated

この表現[self loadWeb:self];は意味がなく、実際のbool変換ではありません。コンパイラは、ポインタを に変換していることを警告しますsigned char

次のいずれかになります。

[self loadWeb:YES];

-また-

[self loadWeb:NO];

-また-

BOOL someBOOLVariableOrParameter = ...; // YES or NO
[self loadWeb:someBOOLVariableOrParameter];
于 2012-04-20T12:37:31.513 に答える
0

selfオブジェクトへのポインターであり、BOOL 値ではありません。これを行う必要があります:

[self loadWeb: YES];

とにかくあなたのメソッドがパラメーターを使用していないように見えることを除いて、それを取り除くこともできます.

[self loadWeb];

- (void)loadWeb
{
    // all the stuff inside
}

それがうまくいった理由は、a) パラメータを使用していなかったこと、b) コンパイラがselfポインタの最下位バイトを除くすべてを切り取って BOOL に自動的に変換することです。このパラメーターを使用していた場合、ほとんどの場合はYES偶然であり、場合によっては偶然だったでしょうNO

于 2012-04-20T12:37:37.890 に答える