Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 从任何对象读取属性_Swift - Fatal编程技术网

Swift 从任何对象读取属性

Swift 从任何对象读取属性,swift,Swift,正在寻找有关如何访问以下属性的帮助 当我称之为func时 func getBattInfo(){ let blob = IOPSCopyPowerSourcesInfo() let list = IOPSCopyPowerSourcesList(blob?.takeRetainedValue()) let batt = list?.takeRetainedValue() let CC = batt as AnyObject

正在寻找有关如何访问以下属性的帮助 当我称之为func时

   func getBattInfo(){

        let blob = IOPSCopyPowerSourcesInfo()
        let list = IOPSCopyPowerSourcesList(blob?.takeRetainedValue())
        let batt = list?.takeRetainedValue()
        let CC = batt as AnyObject
        print(CC)
    }
我明白了

(
        {
        "Battery Provides Time Remaining" = 1;
        BatteryHealth = Good;
        BatteryHealthCondition = "";
        Current = "-1043";
        "Current Capacity" = 76;
        DesignCycleCount = 1000;
        "Hardware Serial Number" = D866434A0AZHDWC4R;
        "Is Charging" = 0;
        "Is Present" = 1;
        "Max Capacity" = 100;
        Name = "InternalBattery-0";
        "Power Source ID" = 6553699;
        "Power Source State" = "Battery Power";
        "Time to Empty" = 336;
        "Time to Full Charge" = 0;
        "Transport Type" = Internal;
        Type = InternalBattery;
    }
)

如何读取或访问这些属性?

条件向下转换
列表
到真正的静态类型

func getBattInfo(){

    let blob = IOPSCopyPowerSourcesInfo()
    let list = IOPSCopyPowerSourcesList(blob?.takeRetainedValue())
    if let powerSources = list?.takeRetainedValue() as? [[String:Any]] {
        for powerSource in powerSources {
           print(powerSource["Hardware Serial Number"])
        }
    }
}

条件向下转换
列表
到实际静态类型

func getBattInfo(){

    let blob = IOPSCopyPowerSourcesInfo()
    let list = IOPSCopyPowerSourcesList(blob?.takeRetainedValue())
    if let powerSources = list?.takeRetainedValue() as? [[String:Any]] {
        for powerSource in powerSources {
           print(powerSource["Hardware Serial Number"])
        }
    }
}

你看到的是一系列字典。因此,强制将
CC
转换为该值,即转换为
[[String:Any]]
。现在您可以访问它的元素了。在您的例子中,它有一个元素,
CC[0]
,它本身就是一个字典,包含
CC[0][“BatteryHealth”]
等元素。

您看到的是一个字典数组。因此,强制将
CC
转换为该值,即转换为
[[String:Any]]
。现在您可以访问它的元素了。在您的例子中,它有一个元素,
CC[0]
,它本身就是一个包含
CC[0][“BatteryHealth”]
等元素的字典。

我明白了,我会这么做。我明白了,我会这么做。