它在Playground中不起作用,但在真实的应用程序中起作用。
但是,我只能
IOPowerSources.h用Swift 无法访问头文件
import IOKit:我不得不与Objective-C建立桥梁。
这是我的解决方案:
IOKit.framework
到您的项目(单击+
进入linked frameworks and Libraries
).m
无论名称如何,都创建一个新的空文件。然后,Xpre将询问是否应创建“桥接标头”。说是。忽略
.m
文件。在YOURAPPNAME-Bridging-Header.h
Xpre刚刚创建的新文件中,添加该行#import <IOKit/ps/IOPowerSources.h>
(不要import IOKit
在您的Swift文件中添加)您现在可以访问大多数
IOPowerSources
功能。
例:
func getBatteryStatus() -> String { let timeRemaining: CFTimeInterval = IOPSGetTimeRemainingEstimate() if timeRemaining == -2.0 { return "Plugged" } else if timeRemaining == -1.0 { return "Recently unplugged" } else { let minutes = timeRemaining / 60 return "Time remaining: (minutes) minutes" }}let batteryStatus = getBatteryStatus()print(batteryStatus)
注意:我无法像
这样访问常量kIOPSTimeRemainingUnlimited
,kIOPSTimeRemainingUnknown
因此我使用了它们的原始值(-2.0和-1.0),但是如果这些常量仍然存在于某个地方,那将更好。
又如 ,具有
IOPSCopyPowerSourcesInfo:
let blob = IOPSCopyPowerSourcesInfo()let list = IOPSCopyPowerSourcesList(blob.takeRetainedValue())print(list.takeRetainedValue())
结果:
=内部; 类型= InternalBattery; } )
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)