2017-05-13 6 views
0

私はこのコードを持っている私はから「充電」の値を取得しようとしています抽出値が

Optional(Swift.Unmanaged<Swift.AnyObject>(_value: <__NSCFArray 0x60800026f4c0>(
{ 
    "Battery Provides Time Remaining" = 1; 
    BatteryHealth = Good; 
    Current = "-1756"; 
    "Current Capacity" = 56; 
    DesignCycleCount = 1000; 
    "Hardware Serial Number" = C0143160D1JF90MAU; 
    "Is Charging" = 0; 
    "Is Present" = 1; 
    "Max Capacity" = 100; 
    Name = "InternalBattery-0"; 
    "Power Source ID" = 4063331; 
    "Power Source State" = "Battery Power"; 
    "Time to Empty" = 117; 
    "Time to Full Charge" = 0; 
    "Transport Type" = Internal; 
    Type = InternalBattery; 
} 
) 
)) 

この閉鎖どうすればいい?

私はスウィフトを初めて利用していますので、どんな助力にも感謝します。

ありがとうございます!

+0

ソース、その後、辞書、その要素としての第1の要素は、[ "充電"]? – Larme

+0

@Larmeこれを拡張できますか? –

答えて

1

IOPSCopyPowerSourcesInfoの文書によると、

クライアントが直接返さCFTypeRef内のデータにアクセスするべきではない - 彼らは代わりに、アクセサ関数IOPSCopyPowerSourcesListとIOPSGetPowerSourceDescriptionを使用する必要があります。ここで

例です。

import IOKit.ps 

let psInfo = IOPSCopyPowerSourcesInfo().takeRetainedValue() 
let psList = IOPSCopyPowerSourcesList(psInfo).takeRetainedValue() as [CFTypeRef] 

for ps in psList { 
    if let psDesc = IOPSGetPowerSourceDescription(psInfo, ps).takeUnretainedValue() as? [String: Any] { 
     if let type = psDesc[kIOPSTypeKey] as? String, 
      let isCharging = (psDesc[kIOPSIsChargingKey] as? Bool) { 
      print(type, "is charging:", isCharging) 
     } 
    } 
} 

出力例:Arrayなど

 
InternalBattery is charging: false 
+0

魅力的な作品!ありがとうございました! –