如何从Titanium移动项目资源文件夹下的iOS Titanium模块访问pdf文件?

时间:2013-03-06 13:34:55

标签: ios path titanium

我正在创建一个钛移动应用程序,其中包含用于 PDF 编辑的iOS模块。我在钛项目( Titanium Studio )资源目录中有一个pdf文件。如何从iOS模块访问 PDF 文件?

我使用Titanium.Filesystem.getResourcesDirectory()+'filename.pdf';

获取了文件路径

将路径传递给iOS模块作为方法参数。

如何在iOS模块中获取文件?

2 个答案:

答案 0 :(得分:2)

您可以使用TiUtils的方法“toUrl:proxy:”。文档中的示例如下所示,但它也适用于您从JS land中获取的arg(只需用您自己的“path”字符串替换):

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

“self”可以是你的模块,因为TiModules本身就是代理(换句话说,把它留作自己可能对你来说很好)。

想要更完整的例子吗?看看我刚才写的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;
    }

答案 1 :(得分:1)

如果它在Resources目录中,那么只需将名称传递给模块,因为这意味着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"];

Heres a reference to this inside the moddevguide for iOS from Titanium.

作为附录如果您发现自己试图将完整路径传递到iOS中的模块,则需要resolve the native path执行此操作:

var file = Titanium.Filesystem.getResourcesDirectory()+'filename.pdf';
var actualPathToPassToModule = file.resolve();