2012-07-04 67 views
1

我有一個Android應用程序,我正在移植到iPhone,一個重要的功能需要打開用戶下載的簡單文本文件。在Android上,通常的方式是讓用戶將文件作爲電子郵件附件獲取,但用戶可以通過任何方式將文件下載到iPhone,以便我的應用可以打開它。有沒有辦法在iPhone上做到這一點?我可以在iPhone上保存文件嗎?

+1

[這裏](http://stackoverflow.com/a/4346034/335858)是打開電子郵件附件的好回答。 – dasblinkenlight

+1

如果您不使用郵件,最常用的下載方法涉及NSURLConnection類。 –

+1

下面是保存和讀取存儲在文檔目錄中的文件的示例:http://stackoverflow.com/a/5619769/1264925 – sigre

回答

0

我不太清楚你是如何處理文本文件的,但是當用戶選擇從應用程序中的郵件應用程序打開附件時,以下方法可以從附加電子郵件中檢索文本文件。

首先,您需要註冊您的應用程序才能打開文本文件。要做到這一點,去你的應用程序的的info.plist文件,並添加以下部分:

<key>CFBundleDocumentTypes</key> 
    <array> 
     <dict> 
     <key>CFBundleTypeName</key> 
     <string>Text Document</string> 
     <key>CFBundleTypeRole</key> 
     <string>Viewer</string> 
     <key>LSHandlerRank</key> 
     <string>Alternate</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>public.text</string> 
     </array> 
    </dict> 
</array> 

這會告訴iOS設備上的您的應用程序可以打開文本文件。現在,只要有一個按鈕顯示「Open In ...」(例如在Safari或Mail中)並且用戶想要打開文本文件,您的應用程序就會顯示在列表中。

您還可以處理文本文件在你的AppDelegate開口道:

-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 
{  
if (url != nil && [url isFileURL]) { 
    //Removes the un-needed part of the file path so that only the File Name is left 
    NSString *newString = [[url absoluteString] substringWithRange:NSMakeRange(96, [[url absoluteString] length]-96)]; 
    //Send the FileName to the USer Defaults so your app can get the file name later 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setObject:newString forKey:@"fileURLFromApp"]; 
    //Save the Defaults 
    [[NSUserDefaults standardUserDefaults] synchronize]; 
    //Post a Notification so your app knows what method to fire 
    [[NSNotificationCenter defaultCenter] postNotificationName:@"fileURLFromApp" object:nil]; 
} else { 
} 
return YES; 
} 

您必須對您的ViewController.m該通知登記:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(fileURLFromApp) name:@"fileURLFromApp" object:nil]; 

然後您可以創建您需要的方法並檢索文件:

- (void) fileURLFromApp 
{ 
//Get stored File Path 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
NSString *filePath = [defaults objectForKey:@"fileURLFromApp"]; 
NSString *finalFilePath = [documentsDirectory stringByAppendingPathComponent:filePath]; 
//Parse the data 
//Remove "%20" from filePath 
NSString *strippedContent = [finalFilePath stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
//Get the data from the file 
NSString* content = [NSString stringWithContentsOfFile:strippedContent encoding:NSUTF8StringEncoding error:NULL]; 

上述方法wi我會給你在NSString中的文本文件的內容叫做content

而且應該工作!祝你好運!

相關問題