2

我是 Objective C 的新手,所以我正在尝试做一些我通常在 Java 中做的事情,比如将 InputStream 转换为 String。基本上,我想在Objective C中做这个Java代码......

InputStream in = … //An inputStream i got from http request

BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder str = new StringBuilder();
String line = null;

while ((line = reader.readLine()) != null) {
    str.append(line);
}

String myString = str.toString();
in.close();

我希望我的问题描述得足够清楚!:)

谢谢!

4

2 回答 2

9

好吧,Caleb 是对的,但要回答这个问题:

NSInputStream *inputStream = [[NSInputStream alloc] init];
uint8_t buffer[1024];
int len;
NSMutableString *total = [[NSMutableString alloc] init];
while ([inputStream hasBytesAvailable]) {
    len = [inputStream read:buffer maxLength:sizeof(buffer)];
    if (len > 0) {
        [total appendString: [[NSString alloc] initWithBytes:buffer length:len encoding:NSASCIIStringEncoding]];
    }
}

你的encoding论点可能不同。

于 2013-02-13T04:15:11.450 回答
5

我是 Objective C 的新手,所以我正在尝试做一些我通常在 Java 中做的事情,比如将 InputStream 转换为 String。基本上,我想在Objective C中做这个Java代码......

可以理解,但是尝试像在 Java 中那样做这些事情通常是行不通的。在 Objective-C 中做的事情并不总是像在 Java 中做的那样,所以你不能只是交换新的类名并稍微修正一下语法。有一个NSInputStream类,但它通常不用于从 Web 服务器下载数据。简而言之,您不会从 http 请求中获得输入流。相反,请查看NSURLConnection类和NSURLConnectionDelegate协议。实际上,您应该阅读完整的文档,称为URL 加载系统编程指南。您将创建一个NSURLConnection实例,给它一个委托,然后让它去做。代表的-connection:didReceiveData:方法将在数据进入时被调用,并且委托可以对数据执行任何操作,例如将其添加到字符串中。

于 2013-02-13T04:09:19.840 回答