Multipeer Connectivity存储以前会话中的PeerID

时间:2015-04-06 08:59:39

标签: ios swift multipeer-connectivity

func browser(browser: MCNearbyServiceBrowser!, foundPeer peerID: MCPeerID!, withDiscoveryInfo info: [NSObject : AnyObject]!) {

    println(peerID) 

}

当我使用这行代码时,我首先从先前的会话接收peerID,然后它从当前会话中提供新的peerID。这些数据存储在哪里?有什么方法可以删除存储的;可能在视图控制器上以某种方式初始化?我只想从当前会话中获取peerID。

这是控制台日志:

<MCPeerID: 0x15559080 DisplayName = iphone>
<MCPeerID: 0x156616e0 DisplayName = iphooneeee>
<MCPeerID: 0x1563da30 DisplayName = iphooneeee>

2 个答案:

答案 0 :(得分:2)

只是猜测......会话是分布式对象。框架(OS)存储分布在参与会话的所有设备上的会话的数据。您可能需要重新启动所有此类设备才能真正删除有关会话的所有数据。我无法说出框架如何知道何时擦除陈旧或过期的会话。但是,例如,如果设备回到范围内,它可能会长时间保持会话。

答案 1 :(得分:0)

我无法解决存储问题,但是通过创建空数组找到了解决方法,每次点击按钮(在我的情况下整理出来)时将其启动为空,并将peerID保存在数组中

 ~ ViewController {
foundPeers: MCPeerID = []

~ ViewDidLoad {
  foundPeers = []

}

 @IBAction var button~ {
   foundPeers = []
} 

// and
  func browser(browser: MCNearbyServiceBrowser!, foundPeer peerID: MCPeerID!, withDiscoveryInfo info: [NSObject : AnyObject]!) {

  foundPeers.append(peerID)

  foundPeers[foundPeers.count - 1].displayName
 }
}

手动存储数据