Dựa trên câu trả lời tôi thấy here và here, tôi đã viết ít chức năng Swift này dành cho bạn:
func getPlatformNSString() {
#if (arch(i386) || arch(x86_64)) && os(iOS)
let DEVICE_IS_SIMULATOR = true
#else
let DEVICE_IS_SIMULATOR = false
#endif
var machineSwiftString : String = ""
if DEVICE_IS_SIMULATOR == true
{
// this neat trick is found at http://kelan.io/2015/easier-getenv-in-swift/
if let dir = NSProcessInfo().environment["SIMULATOR_MODEL_IDENTIFIER"] {
machineSwiftString = dir
}
} else {
var size : size_t = 0
sysctlbyname("hw.machine", nil, &size, nil, 0)
var machine = [CChar](count: Int(size), repeatedValue: 0)
sysctlbyname("hw.machine", &machine, &size, nil, 0)
machineSwiftString = String.fromCString(machine)!
}
print("machine is \(machineSwiftString)")
}
Tôi nhận được một kết quả của "iPhone8,2", mà chuyển đến một chiếc iPhone 6 + , đó là những gì giả lập của tôi được thiết lập.
There's open source code available that you can use that would convert strings like "iPhone8,2
" to the proper iPhone model name.
Và nếu bạn muốn loại bỏ cảnh báo trình biên dịch để sử dụng phép thuật "DEVICE_IS_SIMULATOR
", here's a better solution in the form of a class.
Nguồn
2015-11-03 09:45:57
Cảm ơn bạn rất nhiều vì đã giúp đỡ. –