如何确定当前的 Apple 设备型号?

问题描述

我知道 Stack Overflow 上有很多类似的问题(例如,this one)。但我想确定 Apple 设备型号,而不是型号名称。应该是 A1823 或 A2404 之类的字符串。

解决方法

如果您不介意摆弄私有 API,那么

extension UIDevice {
    var modelNumber: String? {
        let getModelNumber: (Selector) -> String? = {
            return UIDevice.current.perform($0,with: "ModelNumber")?.takeUnretainedValue() as? String
        }
        let _deviceInfoKeySel = NSSelectorFromString("_deviceInfoForKey:")
        let deviceInfoKeySel = NSSelectorFromString("deviceInfoForKey:")
        if UIDevice.current.responds(to: _deviceInfoKeySel) {
            return getModelNumber(_deviceInfoKeySel)
        } else if UIDevice.current.responds(to: deviceInfoKeySel) {
            return getModelNumber(deviceInfoKeySel)
        } 
        return nil
    }
}