swift: подождите, пока не изменится источник питания (mac)

Пока у меня есть фрагмент кода: charging = IOPSGetTimeRemainingEstimate().isEqual(to: kIOPSTimeRemainingUnlimited), который возвращает true или false в зависимости от того, заряжается компьютер или нет. Я хочу следить за обновлениями этого значения, чтобы оно запускало скрипт при изменении. Я новичок в Swift, и любая помощь будет оценена по достоинству. Спасибо!


person Albert Portnoy    schedule 05.08.2017    source источник


Ответы (1)


Вы можете получить состояние зарядки с помощью:

import IOKit.ps

let info = IOPSCopyPowerSourcesInfo().takeRetainedValue()
let sources = IOPSCopyPowerSourcesList(info).takeRetainedValue() as [CFTypeRef]
if let batterySource = sources.first {
    let pSource = IOPSGetPowerSourceDescription(info, batterySource).takeUnretainedValue() as NSDictionary
    let isCharging = pSource[kIOPSIsChargingKey] as! Int // 1 = charging, 0 = not charging
}
person vadian    schedule 05.08.2017
comment
Извините, я не очень ясно выразился, но я хочу отслеживать изменения этого значения. Я хочу иметь возможность запускать функцию при ее изменении. Спасибо за вашу помощь. - person Albert Portnoy; 05.08.2017
comment
Мониторинг также может быть простым таймером. Однако есть API IOPSNotificationCreateRunLoopSource для регистрации уведомлений об изменениях - person vadian; 05.08.2017