dポイントプレゼントキャンペーン実施中!

Objective-CのNSTaskの引数に全角/半角スペース及び日本語を含むパスが指定された場合に正常に処理が行えません。
どのように引数をしていすればいいのか、教えていただきたく投稿させていただきます。

実行するアプリはAutomatorで作成したアプリの為、openコマンドに引数-aを指定しています。

NSTask *tast = [[NSTask alloc]init];
NSString *Command = [NSStrign stringWithFormat:@"/usr/bin/open"];
NSArray *arguments = [NSArray arrayWithObjects:@"-a",
[NSMutableString stringWithFormat:@"%@",アプリのパス],
[NSMutableString strignWithFormat:@"%@",ファイルのパス],
nil];
[task setLaunchPath:Commadn];
[task setArguments:arguments];
[task launch];
[task waitUntilExit];
[task release];

引数配列のargumentsを途中で出力した場合にスペース部がバックスラッシュでエスケープ、日本語はエンコード?されていました。
ダブルクォーテーションで囲んでみたのですが、ダメでした。

どなたか、お分かりなられる方おられましたら、ご教授の程宜しくお願いします。

A 回答 (1件)

こんちは。


NSTaskは使った事無いのですが、ファイルパス名をURLで指定してみてはいかがでしょう?

NSTaskはFoundationフレームワークのクラスなので、ファイルやディレクトリの場所は、
ファイルパス名/URLどちらでも指定できると思います。

で、URLはスペースや英数字以外の文字は使用できないので、UTF-8でテキストエンコーディングします。
NSStringクラスには、stringWithUTF8Stringみたいなエンコードメソッドが多数あるので試してみては?
    • good
    • 0
この回答へのお礼

アドバイスありがとうございました。
ご指摘のURLで指定したところ正常に処理ができました。

ただ、この処理は一度の実行で複数毎の画像に対して処理を行うのですが、1回だけの実行だと正常に終了するのですが、2回以降の実行がある場合失敗してしまいます。

お礼日時:2010/08/09 03:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!