У меня была такая же проблема, но я вроде решил ее таким образом.
(1) сначала создайте переменную, чтобы проверить, была ли отправлена карта мира.
var worldMapHasInited: Bool = false
(2) Затем в func shareSession (кнопка _: кнопка UIB) добавьте эту строку в конец ниже
self.multipeerSession.sendToAllPeers (данные)
self.worldMapHasInited = true
(3) И, наконец, в func receiveData (_ данные: данные от однорангового узла: MCPeerID)
проверить, отправила ли карта мира, если отправлено, пропустить проверку, содержат ли данные карту мира.
if !worldMapHasInited {
if let worldMap = try NSKeyedUnarchiver.unarchivedObject(ofClass: ARWorldMap.self, from: data)
{
//....
// when received world map, set the receiver's
// worldMapHasInited to true
self.worldMapHasInited = true
}
}
else
if let anchor = try NSKeyedUnarchiver.unarchivedObject(ofClass: ARAnchor.self, from: data) {
// ...
}
Это будет непосредственно проверять, содержат ли данные привязку.