我已经注册了我的应用程序,可以打开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有关,但我不太确定。
答案 0 :(得分:0)
当应用程序转到后台或在用户默认设置上调用-synchronize
时,将保存用户默认值。在开发时,您通常不会将应用程序置于后台,但只需通过XCode将其删除,在这种情况下,不会保存任何内容。您可以通过按iPhone / iPad上的主页按钮来保存用户默认设置,并在1秒后在XCode中终止应用程序。
另外,你应该在你的第一个方法中加入一个日志语句,比如NSLog(@"saving amd to %@", [url fileReferenceURL]);
,以确保它真的得到保存!
答案 1 :(得分:0)
好像你忘了打电话了
[[NSUserDefaults standardUserDefaults] synchronize];
将对持久域的任何修改写入磁盘并进行更新 所有未修改的持久域到磁盘上的内容。