Реализация оператора Combine Map, который считывает данные из MainactorIOS

Программируем под IOS
Ответить
Anonymous
 Реализация оператора Combine Map, который считывает данные из Mainactor

Сообщение Anonymous »

У меня есть ощущение, что Свифт Параллелизм снова борется со мной. Это действительно разочаровывает. < /P>
Моя проблема. Мне нужно создать издатель Combine для излучения состояния батареи на устройстве iOS. < /P>
Пока у меня есть: < /p>

extension Notification.Name {
var publisher: NotificationCenter.Publisher {
return NotificationCenter.default.publisher(for: self)
}
}
func createDefaultPublisher() -> AnyPublisher {
UIDevice.batteryLevelDidChangeNotification
.publisher
.compactMap { $0.object as? UIDevice }
.map { device in
Future { promise in
Task { @MainActor in
promise(.success(device.batteryLevel)) // Sending 'promise' risks causing data races
}
}
}
.switchToLatest()
.eraseToAnyPublisher()
}
< /code>
Так что сложная часть для меня - как реализовать оператор карты. Мне нужно переключиться на Mainactor, поэтому я использую будущее с обратным вызовом обещания. Проблема здесь: отправка рисков «Обещание», вызывая гонки данных. Поэтому мне интересно, как сделать это должным образом в Swift 6 в проекте, настроенная с полной строгой проверкой параллелизма

Подробнее здесь: https://stackoverflow.com/questions/797 ... -mainactor
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»