从 url 异步加载锚点不起作用
Loading anchor from url async doesnt work
使用 LoadAnchorAsync(contentsOf: URL) 加载锚点不起作用。这是我的代码:
if let url = url {
let loadRequest = Entity.loadAnchorAsync(contentsOf: url)
_ = loadRequest.sink(receiveCompletion: { completion in
// handle completion
}, receiveValue: { anchor in
self.arView.scene.addAnchor(anchor)
})
} else {
fatalError("no url")
}
但这每次都会崩溃并出现错误:
线程 27:EXC_BREAKPOINT(代码=1,子代码=0x1051e0dfc)
更新:如果我将整个代码块包装在一个 DispatchQueue.main.async 块中,它不会崩溃,但 reveiceCompletion 或 recieveValue 都不会被调用
试试这个
if let url = url {
let loadRequest = try? Entity.load(contentsOf: url)
_ = loadRequest.sink(receiveCompletion: { completion in
// handle completion
}, receiveValue: { anchor in
self.arView.scene.addAnchor(anchor)
})
} else {
fatalError("no url")
}
您必须将订户存储在成员中的某处
// somewhere above
private var subscribers: Set<AnyCancellable>()
...
if let url = url {
let loadRequest = Entity.loadAnchorAsync(contentsOf: url)
loadRequest.sink(receiveCompletion: { completion in
// handle completion
}, receiveValue: { anchor in
self.arView.scene.addAnchor(anchor)
}).store(in: &self.subscribers) // << keep it alive
} else {
fatalError("no url")
}
使用 LoadAnchorAsync(contentsOf: URL) 加载锚点不起作用。这是我的代码:
if let url = url {
let loadRequest = Entity.loadAnchorAsync(contentsOf: url)
_ = loadRequest.sink(receiveCompletion: { completion in
// handle completion
}, receiveValue: { anchor in
self.arView.scene.addAnchor(anchor)
})
} else {
fatalError("no url")
}
但这每次都会崩溃并出现错误:
线程 27:EXC_BREAKPOINT(代码=1,子代码=0x1051e0dfc)
更新:如果我将整个代码块包装在一个 DispatchQueue.main.async 块中,它不会崩溃,但 reveiceCompletion 或 recieveValue 都不会被调用
试试这个
if let url = url {
let loadRequest = try? Entity.load(contentsOf: url)
_ = loadRequest.sink(receiveCompletion: { completion in
// handle completion
}, receiveValue: { anchor in
self.arView.scene.addAnchor(anchor)
})
} else {
fatalError("no url")
}
您必须将订户存储在成员中的某处
// somewhere above
private var subscribers: Set<AnyCancellable>()
...
if let url = url {
let loadRequest = Entity.loadAnchorAsync(contentsOf: url)
loadRequest.sink(receiveCompletion: { completion in
// handle completion
}, receiveValue: { anchor in
self.arView.scene.addAnchor(anchor)
}).store(in: &self.subscribers) // << keep it alive
} else {
fatalError("no url")
}