0

我试图弄清楚如何读取存储在 Web 服务器上的文本文件并在文本视图中显示内容。我遵循了 Apple 网站NSURLConnection中关于如何建立 NSURLConnection 和 receiveData 并显示接收到的数据的文档。

我创建了一个按钮,我想在按钮单击时加载文本视图。为此我写了这个方法

- (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不是真正的布尔类型。它是 a 的 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 回答