有没有办法在Swift中获得设备型号名称(iPhone 4S, iPhone 5, iPhone 5S等)?
我知道有一个名为UIDevice.currentDevice()的属性。模型,但它只返回设备类型(iPod touch, iPhone, iPad, iPhone模拟器等)。
我也知道在Objective-C中使用以下方法可以轻松完成:
#import <sys/utsname.h>
struct utsname systemInfo;
uname(&systemInfo);
NSString* deviceModel = [NSString stringWithCString:systemInfo.machine
encoding:NSUTF8StringEncoding];
但是我正在Swift中开发我的iPhone应用程序,所以有人可以帮助我用等效的方法在Swift中解决这个问题吗?
这里有一个辅助库。
斯威夫特5
吊舱“股息”,“~> 2.0”
Swift 4.0 - Swift 4.2
吊舱“股息”,“~> 1.3”
如果你只是想确定模型并做出相应的东西。
你可以这样用:
let isIphoneX = Device().isOneOf([.iPhoneX, .simulator(.iPhoneX)])
在函数中:
func isItIPhoneX() -> Bool {
let device = Device()
let check = device.isOneOf([.iPhoneX, .iPhoneXr , .iPhoneXs , .iPhoneXsMax ,
.simulator(.iPhoneX), .simulator(.iPhoneXr) , .simulator(.iPhoneXs) , .simulator(.iPhoneXsMax) ])
return check
}
下面是获取硬件字符串的代码,但是您需要比较这些硬件字符串才能知道它是哪个设备。我已经创建了一个类,包含几乎所有的设备字符串(我们保持字符串最新的新设备)。使用方便,请检查
吉hub /恶魔大师
Objective-C: GitHub/DeviceUtil
public func hardwareString() -> String {
var name: [Int32] = [CTL_HW, HW_MACHINE]
var size: Int = 2
sysctl(&name, 2, nil, &size, &name, 0)
var hw_machine = [CChar](count: Int(size), repeatedValue: 0)
sysctl(&name, 2, &hw_machine, &size, &name, 0)
let hardware: String = String.fromCString(hw_machine)!
return hardware
}