NSTask вопрос - PullRequest
       18

NSTask вопрос

2 голосов
/ 06 марта 2011

Я пытаюсь заставить мой NSTask распаковать файл для меня.Это прекрасно работает, если в пути нет пробелов, но когда он есть, он не может найти ни один из файлов.Я не могу жестко закодировать знаки ", поскольку я храню zip-файл во временной папке, назначенной системой.

Кто-нибудь знает, как этого добиться?Вот мой код:

NSTask*task = [[NSTask alloc] init];

[task setLaunchPath:@"/usr/bin/unzip"];

NSArray*arguments = [NSArray arrayWithObjects:zipPath,@"-d",path,nil];

[task setArguments:arguments];

[task launch];

[task release];

Ответы [ 3 ]

2 голосов
/ 06 марта 2011

Почему вы не можете вставлять кавычки?

NSString *quotedPath = [NSString stringWithFormat:@"\"%@\"", path];
NSArray *arguments = [NSArray arrayWithObjects:zipPath, @"-d", quotedPath, nil];
0 голосов
/ 06 марта 2011

Наличие пробела в аргументе не похоже на вашу проблему - обратите внимание, что консоль показывает путь с пробелом. Аргумент с пробелом передается как один аргумент, я только что подтвердил, что он удачно распакует @ "a space.zip". Вы проверили, существует ли файл там, где, как вы думаете, он существует, и у вас есть к нему доступ?

0 голосов
/ 06 марта 2011

Не могли бы вы проанализировать компоненты пути, используя метод - (NSArray *)pathComponents NSString, добавить кавычки, где необходимо, а затем перестроить строку, используя (NSString *)pathWithComponents:(NSArray *)components

Это работает?

...