2013-12-03 120 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的建議。

相關問題