如何在我的iOS应用程序中保留HTML文件?

时间:2014-05-01 19:56:44

标签: ios objective-c nsuserdefaults nsfilemanager appdelegate

我已经注册了我的应用程序,可以打开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文件存储在其字符串表示中,我能够将其保存在Documents文件夹中,但当我尝试加载时字符串使用:

[webView loadHTMLString:htmlString];页面永远不会加载。我认为这与Javascript有关,但我不太确定。

2 个答案:

答案 0 :(得分:0)

当应用程序转到后台或在用户默认设置上调用-synchronize时,将保存用户默认值。在开发时,您通常不会将应用程序置于后台,但只需通过XCode将其删除,在这种情况下,不会保存任何内容。您可以通过按iPhone / iPad上的主页按钮来保存用户默认设置,并在1秒后在XCode中终止应用程序。

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

答案 1 :(得分:0)

好像你忘了打电话了

[[NSUserDefaults standardUserDefaults] synchronize];

Docs:

  

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