0

我的 Objective-c 应用程序有一些问题。我想将输入流转换为textfield.textobjective-c。

我有输入流和输出流的 tcp 客户端。我想使用输入流中的数据并在 uitextfield 中显示它们。

我可以使用类似的东西:

temperatura.text = [inputStream read:buffer maxLength:sizeof(buffer)];


- (void)stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEvent {

    NSLog(@"stream event %i", streamEvent);

    switch (streamEvent) {

        case NSStreamEventOpenCompleted:
            NSLog(@"Stream opened");
            break;
        case NSStreamEventHasBytesAvailable:

            if (theStream == inputStream) {

                uint8_t buffer[1024];
                int len;

                while ([inputStream hasBytesAvailable]) {
                    len = [inputStream read:buffer maxLength:sizeof(buffer)];
                    if (len > 0) {

                        NSString *output = [[NSString alloc] initWithBytes:buffer length:len encoding:NSASCIIStringEncoding];

                        if (nil != output) {

                            NSLog(@"server said: %@", output);


                        }
                    }
                }
            }
            break;

我正在使用这个客户端。我想使用“输出”中的数据将它们放在文本字段中。

4

2 回答 2

0

参考以下代码

  • (void)stream:(NSStream *)stream handleEvent:(NSStreamEvent)eventCode {

    开关(事件代码){

    case NSStreamEventHasBytesAvailable:
    
    {
    
        if(!_data) {
    
            _data = [[NSMutableData data] retain];
    
        }
    
        uint8_t buf[1024];
    
        unsigned int len = 0;
    
        len = [(NSInputStream *)stream read:buf maxLength:1024];
    
        if(len) {
    
            [_data appendBytes:(const void *)buf length:len];
    
            // bytesRead is an instance variable of type NSNumber.
    
            [bytesRead setIntValue:[bytesRead intValue]+len];
    
        } else {
    
            NSLog(@"no buffer!");
    
        }
    
        break;
    

**

tempatura.text = [[NSString alloc] initWithBytes:[_data bytes] 长度:[_data length] encoding:NSUTF8StringEncoding]

**

于 2012-07-13T12:30:39.413 回答
0

以下代码行将返回一个 int

[输入流读取:缓冲区最大长度:大小(缓冲区)]

以下代码行需要一个 NSString 而不是 int

温度文本

因此,[inputStream read:buffer maxLength:sizeof(buffer)]在分配给temperatura.text. 您可以使用以下类型进行类型转换:

temperatura.text = [NSString stringWithFormat:@"%d",[inputStream read:buffer maxLength:sizeof(buffer)]];

一个简单的类型转换示例是:

NSString *string = [NSString stringWithFormat:@"%d", theinteger];

请注意,我尚未测试此代码的正确语法,但这可能是一个解决方案。如果您遇到任何问题,请告诉我。

谢谢

于 2012-07-13T11:37:24.257 回答