2014-08-27 69 views
-1

我正在开发一个应用程序,我需要将对象发送给另一个应用程序。这两个应用程序使用多路连接器框架相互通信。Objective C - 使用Multipeer连接框架发送对象,没有连接对象

特别,我想送名为Order的对象,那就是

@interface Order : NSObject <NSCoding> 

@property (strong, nonatomic) NSString *customerName; 
@property (strong, nonatomic) NSDate *arrivalTime; 
@property (strong, nonatomic) NSNumber *totalPrice; 
@property (strong, nonatomic) NSArray *products; 

@end 

从名为OrderAndPay到称为POS“服务器”应用程序“客户端”应用程序。下面是我在OrderAndPay应用程序代理中发送此对象的方式

NSData *dataToBeSent = [NSKeyedArchiver archivedDataWithRootObject:self.order]; 
NSError *error = nil; 

NSArray *array = [[NSArray alloc] initWithObjects:[self.mpHandler.session connectedPeers], nil]; 

if ([self.mpHandler.session sendData:dataToBeSent 
          toPeers: array 
          withMode:MCSessionSendDataUnreliable 
           error:&error]) { 
    return YES; 
} 

return NO; 

但是我总是得到NO!当我尝试调试时,xCode说

Printing description of error: Error Domain=MCSession Code=1 "Peers ( ( POS )) not connected" UserInfo=0x16e8bcb0 {NSLocalizedDescription=Peers ( ( POS )) not connected}

所以看起来POS没有连接。但是正如我之前写的,我使用我的MCSession的方法connectedPeers让同伴们获益!

我该如何解决?

回答

0

解决。我改变了在if语句中的呼叫

[self.mpHandler.session sendData:dataToBeSent 
          toPeers: [self.mpHandler.session connectedPeers] 
          withMode:MCSessionSendDataUnreliable 
           error:&error] 

它工作。

1

非要在这两个应用程序相同的会话类型.. static NSString * const kMCSessionServiceType = @"mcsessionp2p";

_serviceAdvertiser = [[MCNearbyServiceAdvertiser alloc] initWithPeer:self.peerID 
                 discoveryInfo:nil 
                 serviceType:kMCSessionServiceType]; 


// Create the service browser 
_serviceBrowser = [[MCNearbyServiceBrowser alloc] initWithPeer:self.peerID 
                serviceType:kMCSessionServiceType