我有一個Android應用程序,我正在移植到iPhone,一個重要的功能需要打開用戶下載的簡單文本文件。在Android上,通常的方式是讓用戶將文件作爲電子郵件附件獲取,但用戶可以通過任何方式將文件下載到iPhone,以便我的應用可以打開它。有沒有辦法在iPhone上做到這一點?我可以在iPhone上保存文件嗎?
1
A
回答
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
而且應該工作!祝你好運!
相關問題
- 1. 我可以在iPhone上使用setModalPresentationStyle嗎?
- 2. 我可以將下載的文件保存到iphone中的NSCacheDictionary中嗎?
- 3. 我們可以將通知保存到iphone/ipad的SMS文件夾中嗎?
- 4. 我可以在TextPad中自動保存打開未保存的文件嗎
- 5. 我可以將文件存儲在iPhone的文件系統中嗎?
- 6. 我可以讓Visual Studio 2013在文件保存上運行Powershell命令嗎?
- 7. 我可以使用FileOutputStream將文件保存在服務器上嗎?
- 8. 我可以在iPhone上緩存音頻嗎?
- 9. 我們可以在iPhone上緩存解析的XML數據嗎?
- 10. iPhone - 在mapkit上保存爲kml文件
- 11. 我可以在Android內部存儲上創建文件夾嗎?
- 12. 我可以在Rails中保存上傳的文件?
- 13. 我可以緩存jquery .map文件嗎?
- 14. 我們可以運行保存在jar文件中的ant文件嗎?
- 15. 我可以用saveRDS保存多個文件嗎?
- 16. 我可以將byteArray保存爲mp3文件嗎?
- 17. 我可以保存到Lua和LÖVE的特定文件夾嗎?
- 18. AVAudioRecorder:我們可以記錄而不保存到文件中嗎?
- 19. 我可以將大的json文件直接保存到mongodb嗎?
- 20. 我可以保存一個對象到app.config文件嗎?
- 21. 我可以或不可以在越獄iphone上開發嗎?
- 22. iPhone設備令牌:它可以存儲在iPhone上嗎?
- 23. 我可以在xcode上使用中文iphone進行調試嗎?
- 24. 我們可以在iPhone中生成受密碼保護的csv文件嗎?
- 25. 我可以在iPhone OS中保存我的應用程序的狀態嗎?
- 26. 我可以通過片段訪問保存在內存中的文件嗎?
- 27. 文件保存在iphone
- 28. 將文件保存在iphone
- 29. 哪裏可以在應用程序iPhon/iphone中保存文件?
- 30. 我可以通過SDK訪問iPhone上的可視語音郵件文件嗎?
[這裏](http://stackoverflow.com/a/4346034/335858)是打開電子郵件附件的好回答。 – dasblinkenlight
如果您不使用郵件,最常用的下載方法涉及NSURLConnection類。 –
下面是保存和讀取存儲在文檔目錄中的文件的示例:http://stackoverflow.com/a/5619769/1264925 – sigre