如何在我的 iOS 应用程序中保留 HTML 文件?
Posted
技术标签:
【中文标题】如何在我的 iOS 应用程序中保留 HTML 文件?【英文标题】:How can I persist an HTML file in my iOS application? 【发布时间】:2014-05-01 19:56:43 【问题描述】:我已注册我的应用程序以便能够打开 html 文件。我希望应用程序保留它打开的最后一个 HTML 文件...如果我打开一个新的 HTML 文件,我希望它覆盖最后一个打开的文件。
我尝试使用 Documents 目录,但它不适合我。我也尝试过使用NSUserDefaults
无济于事。这是我目前拥有的:
-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
ViewController *vc = (ViewController *)self.window.rootViewController;
[vc loadFileWithUrl:url];
[[NSUserDefaults standardUserDefaults] setURL:[url fileReferenceURL] forKey:@"amd"];
return YES;
我完全终止应用程序,然后调用- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
。以下是该方法的外观:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
NSURL *url = [[NSUserDefaults standardUserDefaults] URLForKey:@"amd"];
if (url)
ViewController *vc = (ViewController *)self.window.rootViewController;
[vc loadFileWithUrl:url];
return YES;
url
始终为零 :(
PS:我也尝试将 HTML 文件存储为其字符串表示形式,并且我 am 能够将其保留在 Documents
文件夹中,但是当我尝试使用加载该字符串时:
[webView loadHTMLString:htmlString];
页面永远不会加载。我认为这与 javascript 有关,但我不太确定。
【问题讨论】:
【参考方案1】:当应用程序进入后台或在用户默认值上调用-synchronize
时,会保存用户默认值。开发时,您通常不会将应用程序置于后台,而只是通过 XCode 将其杀死,在这种情况下,什么都不会保存。您可以通过按 iPhone/iPad 上的主页按钮保存用户默认设置,并在 1 秒后在 XCode 中终止应用程序。
另外,你应该在你的第一个方法中加入一个日志语句,比如NSLog(@"saving amd to %@", [url fileReferenceURL]);
,以确保它真的被保存了!
【讨论】:
【参考方案2】:你好像忘记打电话了
[[NSUserDefaults standardUserDefaults] synchronize];
Docs:
将对持久域的任何修改写入磁盘并进行更新 所有未修改的持久域到磁盘上的内容。
【讨论】:
以上是关于如何在我的 iOS 应用程序中保留 HTML 文件?的主要内容,如果未能解决你的问题,请参考以下文章
iOS UIImagePickerController 和 UIWebView 导致内存问题;呈现这些视图时如何保留我的应用程序的状态?
OCUnit - iOS 5 - 如何在我的应用程序中测试文件?