2014-08-27 70 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