目标 C - 使用多点连接框架发送对象,点未连接
Posted
技术标签:
【中文标题】目标 C - 使用多点连接框架发送对象,点未连接【英文标题】:Objective C - Send Object with Multipeer Connectivity Framework, Peer not connected 【发布时间】:2014-08-27 10:25:16 【问题描述】:我正在开发一个应用程序,我需要将一个对象发送到另一个应用程序。这两个应用程序使用多点连接框架相互通信。
特别想发送一个叫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;
但结果我总是没有!当我尝试调试时,xCode 说
打印错误描述:Error Domain=MCSession Code=1 "Peers ( ( POS ) ) 未连接" UserInfo=0x16e8bcb0 NSLocalizedDescription=Peers ( ( POS ) ) 未连接
所以看来 POS 没有连接。但正如我之前写的,我让我的同行使用我的MCSession
的方法connectedPeers
!!!
我该如何解决?
【问题讨论】:
【参考方案1】:您必须在两个应用程序中提供相同的 sessionType..
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
【讨论】:
【参考方案2】:解决了。我已经更改了 if 语句中的调用
[self.mpHandler.session sendData:dataToBeSent
toPeers: [self.mpHandler.session connectedPeers]
withMode:MCSessionSendDataUnreliable
error:&error]
它成功了。
【讨论】:
以上是关于目标 C - 使用多点连接框架发送对象,点未连接的主要内容,如果未能解决你的问题,请参考以下文章