🚨 不再维护 🚨


设备



Swift 包,包含来自 https://www.theiphonewiki.com/wiki/Models 的所有设备。一个常见的用例是想要将设备标识符(也称为机器标识符)例如 iPhone10,1 转换为用户友好的名称;iPhone 8。

功能

使用方法

每个设备都有一个 all 属性。使用它来查找、过滤、映射等。以下是一些示例。

查找当前设备的世代

let identifier = "iPad3,6"
let iPhone = iPhone.all.first { $0.identifier == identifier }
iPhone.generation // iPad (4th generation)

使用下标查找当前设备的世代

let identifier = "iPad3,6"
let iPhone = DeviceList().all[identifer].first!
iPhone.generation // iPad (4th generation)

列出 iPad Air 2 64 GB 的所有可用颜色

let colors = iPadAir.all.filter {
    $0.generation == "iPad Air 2" &&
    $0.storage == "64 GB"
}.map { $0.finish }
Set(colors).sorted() // ["Gold", "Silver", "Space Gray"]

列出所有 Apple Watch 标识符

let identifiers = AppleWatch.all.map { $0.identifier }
Set(identifiers).sorted() // ["Watch1,1", "Watch1,2", "Watch2,3", ...]

列出 iPad mini 2, iPad4,5, 银色 16 GB 的所有型号

let iPad = iPadMini.all.first {
    $0.identifier == "iPad4,5" &&
    $0.finish == "Silver" &&
    $0.storage == "16 GB"
}!
iPad.model.components(separatedBy: ", ") // ["ME814", "ME818", "MF074", "MF075", "MF076", "MF544"]

请参阅 FAQ 了解为何在某些示例中使用 Set

安装

SPM

将以下内容添加到您的项目

https://github.com/ptrkstr/Devices

FAQ

我可以访问哪些设备列表和属性?

您可以通过访问 Types 来查看它们。

为什么我可以看到重复的设备?例如,iPad Air 有 3 组银色 16 GB。

这是因为很多设备型号的发布会根据地区略有不同,例如在中国,iPhone 可能配备两个 SIM 卡槽,而在西方地区则包含 1 个卡槽 [和一个 esim]。这些不同的设备往往有不同的 “A” 编号、FCC ID、标识符和型号。如果您正在搜索外观/颜色或存储容量,您可能需要删除重复项。

为什么一些返回的值是问号或未知?

数据可能尚未可用。

如何拆分包含逗号或换行符的值?

型号字段有时包含多个型号名称。这些可以使用 .model.components(separatedBy: ", ") 分割。标识符字段有时包含多个标识符。这些可以使用 .identifier.components(separatedBy: "\n") 分割。

当 Apple 发布新设备时,这个库会多久更新一次?

每天都会运行检查,查看 设备列表是否已更改。如果更改,将提出拉取请求,并且我会收到通知进行审查。您最多可以预期几天延迟。

替代方案