0

Objective-cアプリに問題があります。textfield.text入力ストリームをObjective-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;

私はこのクライアントを使用しています。'output'のデータを使用して、テキストフィールドに取得したいと思います。

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;
    

**

Temperatura.text = [[NSString alloc] initWithBytes:[_data バイト] length:[_data length] encoding:NSUTF8StringEncoding]

**

于 2012-07-13T12:30:39.413 に答える
0

次のコード行は int を返します

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

次のコード行には、int ではなく NSString が必要です

温度.テキスト

したがって[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 に答える