2

PDF編集用のiOSモジュールを含むチタンモバイルアプリケーションを作成しています。チタンプロジェクト( Titanium Studio)のリソースディレクトリにPDFファイルがあります。iOSモジュールからPDFファイルにアクセスするにはどうすればよいですか?

を使用してファイルパスを取得しましたTitanium.Filesystem.getResourcesDirectory()+'filename.pdf';

そして、メソッドパラメータとしてiOSモジュールへのパスを渡します。

iOSモジュールでファイルを取得する方法は??

4

2 に答える 2

2

TiUtilsのメソッド「toUrl:proxy:」を使用できます。ドキュメントの例は次のとおりですが、JSランドから取得する引数にも適用されます(独自の「パス」文字列に置き換えるだけです)。

NSString *path = [NSString stringWithFormat:@"modules/%@/foo.png",[self moduleId]];
NSURL *url = [TiUtils toURL:path proxy:self];
UIImage *image = [TiUtils image:url proxy:self];

TiModuleはそれ自体がプロキシであるため、「自己」をモジュールにすることができます(つまり、自己のままにしておくことはおそらく問題ありません)。

より完全な例が必要ですか?少し前に書いたAirPrintモジュールを見てください。"print:(id)args"メソッドは{url: "whatever.pdf"}を受け取り、それをURLに変換し、UIスレッドで何か面白いことをします。

- (void)print:(id)args
{
    ENSURE_UI_THREAD(print,args);
    ENSURE_SINGLE_ARG(args,NSDictionary);

    NSURL* url = [TiUtils toURL:[args objectForKey:@"url"] proxy:self];
    if (url==nil) {
        NSLog(@"[ERROR] Print called without passing in a url property!");
        return;
    }
于 2013-03-07T04:28:37.733 に答える
1

リソースディレクトリにある場合は、名前をモジュールに渡すだけです。これは、PDFがメインのアプリケーションアセットバンドルに含まれていることを意味するため、次のコードを使用してモジュールへのパスを取得します。

// The application assets can be accessed by building a path from the mainBundle of the application.
NSString *filePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"filename.pdf"];

これは、TitaniumのiOS用moddevguide内のこれへの参照です。

補遺としてiOSのモジュールにフルパスを渡そうとしていることに気付いた場合は、次のようにしてネイティブパスを解決する必要があります。

var file = Titanium.Filesystem.getResourcesDirectory()+'filename.pdf';
var actualPathToPassToModule = file.resolve();
于 2013-03-06T17:01:42.587 に答える