我的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'中的数据来获取文本字段。
答案 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;
**
**