2016-08-25 2 views
0

Как я мог бы сделать, если заявление о том, как:См NSTask выход Какао

if(the output of a nstask is equal to a specific string){ 
    //do stuff over here 
} 

Я бегу NSTask и подстава-х из данных, исходит от него в NSLog, но как я мог не показывать она есть, но сохранить его как NSString или что-то вроде этого

Это то, что моя задача выглядит

NSTask *task = [[NSTask alloc] init]; 
[task setLaunchPath:@"/usr/bin/csrutil"]; 
[task setArguments:@[ @"status" ]]; 
[task launch]; 

Любая помощь очень ценится :)

ответ

3

Для получения результата вам понадобится pipe и file handle.

написать метод

- (NSString *)runShellScript:(NSString *)cmd withArguments:(NSArray *)args 
{ 
    NSTask *task = [[NSTask alloc] init]; 
    [task setLaunchPath:cmd]; 
    [task setArguments:args]; 

    NSPipe *pipe = [NSPipe pipe]; 
    [task setStandardOutput: pipe]; 
    NSFileHandle *file = [pipe fileHandleForReading]; 

    [task launch]; 

    NSData *data = [file readDataToEndOfFile]; 
    return [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding]; 
} 

и назвать его

NSString *result = [self runShellScript:@"/usr/bin/csrutil" withArguments:@[ @"status" ]]; 
+0

спасибо за помощь, но, как я мог бы сделать, если заявление, если результат равен строке? – Bisquitue

+0

[Как проверить, соответствует ли NSString определенному строковому значению?] (Http://stackoverflow.com/q/7266218) @Bisquitue –

+0

@JoshCaswell Это был глупый вопрос, который я только понял после публикации – Bisquitue

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