5

AMWorkflow から NSUserAutomatorTask にいくつかのコードを移行して、最終的にアプリをサンドボックス化できるようにしています。AMWorkflow で可能だったように、ワークフロー内の既存の変数の値を次のように設定できるようにしたいと考えています。

AMWorkflow *task = [[AMWorkflow alloc] initWithContentsOfURL:scriptURL error:nil];
[task setValue:@"myValue" forVariableWithName:@"myVar"];

ただし、NSUserAutomatorTask で同様の作業を行うことはできないようです。私が見つけることができる唯一のドキュメント (クラス リファレンス) は、変数を NSDictionary として提供すると述べています。

だから私は次のようなことを試みています:

NSUserAutomatorTask * task = [[NSUserAutomatorTask alloc] initWithURL:workflow error:nil];

task.variables = [NSDictionary dictionaryWithObject:@"myValue" forKey:@"myVar"];
[task executeWithInput:nil completionHandler:^(id result, NSError *error){
    if(error)
        NSLog(@"Error while executing workflow %@", [error localizedDescription]);
}];

NSUserAutomatorTask の "executeWithInput:" で指定された値が無視されるという別の回答 (サンドボックス化されたアプリで AMWorkflow を使用する) を読みました。変数もそうである可能性はありますか?

4

2 に答える 2

1

これは役立つかもしれません - まだ試していませんが、同じ答えを探しています

https://developer.apple.com/library/mac/#documentation/AppleApplications/Reference/AMWorkflow_class/Reference/Reference.html#//apple_ref/occ/cl/AMWorkflow

setValue:forVariableWithName: 指定された名前のワークフロー変数の値を設定します。

- (BOOL)setValue:(id)value forVariableWithName:(NSString *)variableName

パラメータ value 名前付き変数に設定する値。

variableName 値を設定する変数の名前。

戻り値 variableName が見つかり、その値が設定されている場合は YES。そうでなければいいえ。

解説 variableName で指定された変数が見つからない場合、このメソッドは何もしません。

提供状況 OS X v10.5 以降で利用可能。AMWorkflow.h で宣言 valueForVariableWithName: 指定された名前のワークフロー変数の値を返します。

- (id)valueForVariableWithName:(NSString *)variableName

パラメータ variableName 変数名。

戻り値 変数の値。指定された名前の変数が見つからない場合は nil を返します。

提供状況 OS X v10.5 以降で利用可能。関連項目 – setValue:forVariableWithName: AMWorkflow.h で宣言されている writeToURL:error

于 2013-03-06T15:54:33.557 に答える