2013-12-03 71 views
1

我想创建一个应用程序,该应用程序将打开特定的文件类型,主要来自保存箱。我知道我需要在属性列表中设置我的应用程序能够打开某些文件扩展名,但我该如何阅读该文件?例如,当用户在“打开”菜单中触摸我的应用程序图标时,我的应用程序将如何从该文件获取数据?它将是一个ASCII文件,我想从它读取数据到内存中。具体来说,它将读取.obj文件。 *注意:我对C语言比Objective-C更精通,所以越具体越好。从另一个应用程序的“打开”菜单中打开文件

回答

2

您的应用程序需要提供应用程序委托,即实现UIApplicationDelegate协议的类。在该类中,您必须覆盖方法application:openURL:sourceApplication:annotation:。只要您的应用程序处理文件,iOS就会调用此方法。

这是一个简单的示例实现,可以处理文件URL

- (BOOL) application:(UIApplication*)application 
      openURL:(NSURL*)url 
    sourceApplication:(NSString*)sourceApplication 
      annotation:(id)annotation 
{ 
    if (! [url isFileURL]) 
    return NO; 
    NSString* filePath = [url path]; 

    // Insert code here that processes the file 

    // Clean up after you processed the file 
    NSFileManager* fileManager = [NSFileManager defaultManager]; 
    [fileManager removeItemAtPath:filePath error:nil] 

    // Indicate that you were able to process the file 
    return YES; 
} 

如果您的应用程序还没有运行,iOS的调用几个其他的应用程序的委托方法第一,其次是这种方法。例如,您的应用程序委托可以覆盖application:didFinishLaunchingWithOptions:并检查作为参数传入的字典的内容。这使您有机会接受或拒绝URL。

另一个简单的例子:

- (BOOL) application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions 
{ 
    BOOL canHandleURL = NO; 
    NSURL* url = [launchOptions valueForKey:UIApplicationLaunchOptionsURLKey]; 
    if ([url isFileURL]) 
    canHandleURL = YES; 
    return canHandleURL; 
} 

有关其他信息,我想再说一遍,你看了关于UIApplicationDelegate protocol苹果文档rmaddy的建议。

相关问题