Я создаю приложение с помощью Swift, которое использует Apple RoomPlan, но я пытаюсь установить ориентацию на опцию GravityAndHeading. Я пытаюсь создать собственный ARSession и передать его в свой RoomPlanSession, чтобы изменить ориентацию, но он не работает.
class RoomCaptureController: RoomCaptureViewDelegate, RoomCaptureSessionDelegate, ObservableObject
{
var roomCaptureView: RoomCaptureView
private var arSession: ARSession
private var arConfig: ARWorldTrackingConfiguration
var sessionConfig: RoomCaptureSession.Configuration
init() {
let arConfig = ARWorldTrackingConfiguration()
arConfig.worldAlignment = .gravityAndHeading
arSession = ARSession()
roomCaptureView = RoomCaptureView(frame: CGRect(x: 0, y: 0, width: 42, height: 42)) arSession: arSession)
sessionConfig = RoomCaptureSession.Configuration()
roomCaptureView.captureSession.delegate = self
roomCaptureView.delegate = self
}
Выше приведен мой текущий код, но у меня возникает проблема с использованием self до того, как все переменные будут объявлены в строке, где назначается roomCaptureView.
В строке, назначающей RoomCaptureView, есть эта ошибка: «self» используется при доступе к свойству «arSession» до инициализации всех сохраненных свойств.
В двух строках делегата есть эта ошибка: «self» используется при доступе к свойству «roomCaptureView» перед инициализацией всех сохраненных свойств.
И в ответе говорится, что я не инициализировал все сохраненные свойства.
Если я запущу его без специального ARSession, мой код будет работать.
Как я могу это исправить?
Добавил ошибки в вопрос.





Я это понял, пришлось немного поменять код. Я думаю, проблема заключалась в объявлении arSession перед init, а затем назначении и использовании его в качестве входных данных для RoomCaptureView в init.
class RoomCaptureController: RoomCaptureViewDelegate, RoomCaptureSessionDelegate, ObservableObject{
var roomCaptureView: RoomCaptureView
var sessionConfig: RoomCaptureSession.Configuration
init() {
roomCaptureView = RoomCaptureView(frame: CGRect(x: 0, y: 0, width: 42, height: 42))
sessionConfig = RoomCaptureSession.Configuration()
let arConfig = ARWorldTrackingConfiguration()
arConfig.worldAlignment = .gravityAndHeading
roomCaptureView.captureSession.arSession.run(arConfig)
roomCaptureView.captureSession.delegate = self
roomCaptureView.delegate = self
}
}
Можете ли вы добавить точный текст ошибки?