将inputstream转换为textfield.text objective-c

时间:2012-07-13 11:15:28

标签: objective-c uitextfield inputstream

我的Objective-c应用程序存在一些问题。我想在objective-c中将输入流转换为textfield.text

我有输入流和输出流的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;

我正在使用这个客户端。我想使用'output'中的数据来获取文本字段。

2 个答案:

答案 0 :(得分:0)

以下代码行将返回一个int

  

[inputStream read:buffer maxLength:sizeof(buffer)]

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

  

temperatura.text

因此,在分配给[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];

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

由于

答案 1 :(得分:0)

参考Folowing Code

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

    switch(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;
    

**

Temperatura.text = [[NSString alloc] initWithBytes:[_ data bytes] length:[_ data length] encoding:NSUTF8StringEncoding]

**