2011-05-23 88 views
1

任何一个都可以为我提供一个通过wifi网络发送NSArray对象的好方法。 我有一个代码,通过无线网络发送文本消息(字符串)。 我的代码是如何通过WiFi网络传递NSArray?

发送

- (void) sendText:(NSString *)string { 
    const uint8_t *message = (const uint8_t *)[string UTF8String]; 


    if (_outStream && [_outStream hasSpaceAvailable]) 
     if([_outStream write:message maxLength:strlen((char *)message)] == -1) 
      NSLog(@"Failed sending data to peer"); 
} 

接收机侧

- (void) stream:(NSStream *)stream handleEvent:(NSStreamEvent)eventCode 
{ 
    switch(eventCode) { 

     case NSStreamEventHasBytesAvailable: 
     { 
      if (stream == _inStream) { 
       // read it in 
       unsigned int len = 0; 
       len = [_inStream read:buf maxLength:buffSize]; 
       buf[len] = '\0'; 
       if(!len) { 
        if ([stream streamStatus] != NSStreamStatusAtEnd) 
         NSLog(@"Failed reading data from peer"); 
       } else { 
        NSString *message = [NSString stringWithUTF8String:(char *)buf]; }} 

现在消息包含我收到的消息... 但是我需要发送的NSArray对象通过wifi可以任何一个帮我做到这一点..

回答

4

可以使用NSKeyedArchiver获得NSData对象你的NSArray中, NSData对象只是二进制数据的包装,所以你可以通过你的套接字发送它。当您收到数据时,首先将其转换回NSData对象,然后使用NSKeyedUnarchiver类来恢复数组。

+3

如果你在数组中有自定义对象,只需使它们的类符合NSCoding并实现NSCoding方法。 :) – 2011-05-23 10:34:25

1

你需要机制(协议),将发送数组的元素从发送端和以同样的方式,将得到在接收端