如何在我的 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 导致内存问题;呈现这些视图时如何保留我的应用程序的状态?

在Django中,提交表单2后如何保留表单数据?

OCUnit - iOS 5 - 如何在我的应用程序中测试文件?

如何使用我的 iOS 应用程序在我的 iPad/iPhone 中打开 PDF 文件?

如何在我的 IOS SwiftUI 应用程序中打开文件?

iOS 8 移除今日扩展