2015-09-30 6 views
0

Есть ли какой-либо класс/функция, которая получает меня весь объект информационной системы?Получить всю информацию о системе на OS X

С системой информационного объекта я имею в виду все данные, которые мы можем увидеть, если открыть информационное приложение System на OS X.

я нашел несколько классов до сих пор, что дает мне некоторую информацию, но не все ,

Я боюсь, что нет класса, который может дать мне всю информацию сразу, так как я еще ничего не нашел в документации, но я мог бы контролировать это, так как я довольно новичок в разработке OS X и еще не знаком с SDK.

+0

Thanks @Eric D. – m4lt3

ответ

1

Вызов system_profiler на NSTask

let task = NSTask() 
let outputPipe = NSPipe() 

task.launchPath = "/usr/sbin/system_profiler" 
task.arguments = ["-xml", "-detailLevel", "mini"] 
task.standardOutput = outputPipe 
task.launch() 
let outputData = outputPipe.fileHandleForReading.readDataToEndOfFile() 

let output = NSString(data: outputData, encoding: NSUTF8StringEncoding) as! String 
print(output) 

Этот синтаксис возвращает минимальную информацию в списке свойств.
Для получения дополнительной информации, как и другие detailLevel значения см man page

+0

Спасибо большое, вот что мне нужно. Это хакерское решение? Или обычно (или разумно) запускать программу в качестве подпроцесса? – m4lt3

+0

Это не хаки. Вызов открытого исполняемого файла в подсистеме BSD - обычная процедура. Но учтите, что получение данных является синхронным и может занять много времени, поэтому рекомендуется вызывать этот процесс в фоновом потоке. – vadian

+0

Я сделаю это. Благодарю. – m4lt3

Смежные вопросы