【问题标题】:How can I persist an HTML file in my iOS application?如何在我的 iOS 应用程序中保留 HTML 文件?
【发布时间】: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 有关,但我不太确定。

【问题讨论】:

    标签: ios objective-c nsuserdefaults nsfilemanager appdelegate


    【解决方案1】:

    当应用程序进入后台或在用户默认值上调用-synchronize 时,会保存用户默认值。开发时,您通常不会将应用程序置于后台,而只是通过 XCode 将其杀死,在这种情况下,什么都不会保存。您可以通过按 iPhone/iPad 上的主页按钮保存用户默认设置,并在 1 秒后在 XCode 中终止应用程序。

    另外,你应该在你的第一个方法中加入一个日志语句,比如NSLog(@"saving amd to %@", [url fileReferenceURL]);,以确保它真的被保存了!

    【讨论】:

      【解决方案2】:

      你好像忘记打电话了

      [[NSUserDefaults standardUserDefaults] synchronize];
      

      Docs:

      将对持久域的任何修改写入磁盘并进行更新 所有未修改的持久域到磁盘上的内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-19
        • 1970-01-01
        • 2017-11-15
        • 1970-01-01
        • 1970-01-01
        • 2018-01-23
        相关资源
        最近更新 更多