Swift 从任何对象读取属性
正在寻找有关如何访问以下属性的帮助 当我称之为func时Swift 从任何对象读取属性,swift,Swift,正在寻找有关如何访问以下属性的帮助 当我称之为func时 func getBattInfo(){ let blob = IOPSCopyPowerSourcesInfo() let list = IOPSCopyPowerSourcesList(blob?.takeRetainedValue()) let batt = list?.takeRetainedValue() let CC = batt as AnyObject
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”]
等元素的字典。我明白了,我会这么做。我明白了,我会这么做。