let ptr = UnsafeMutablePointer<utsname>.allocate(capacity: 1)
uname(ptr)
let mirro = Mirror(reflecting: ptr.pointee.machine)//反射
var identifier = mirro.children.compactMap{ (machine) -> Int8? in
guard let value = machine.value as? Int8 else {return nil}
return value
}
let str = String(cString: &identifier)
print("identifier===\(str)")
free(ptr)//释放
在swift4.1的时候flatMap方法重命名为compactMap。