Html 如何覆盖或保存现有的';是否在UIWebView中编辑?

Html 如何覆盖或保存现有的';是否在UIWebView中编辑?,html,ios,file,uiwebview,local,Html,Ios,File,Uiwebview,Local,该应用程序使用UIWebView加载本地HTML文件(现在仅为文本)进行编辑。我需要将用户编辑的内容保存回本地文件。这是我唯一能想到的方法: 一旦用户编辑了文本,我就编写了一个保存方法,该方法在web视图中获取当前HTML,并将其保存到一个HTML文件(与原始文件具有相同的文件名),该文件将写入documents目录。从理论上讲,这应该会覆盖原始版本。但事实并非如此 -(void)save{ NSError *err; NSString * docsDir = [NSHomeDi

该应用程序使用UIWebView加载本地HTML文件(现在仅为文本)进行编辑。我需要将用户编辑的内容保存回本地文件。这是我唯一能想到的方法:

一旦用户编辑了文本,我就编写了一个保存方法,该方法在web视图中获取当前HTML,并将其保存到一个HTML文件(与原始文件具有相同的文件名),该文件将写入documents目录。从理论上讲,这应该会覆盖原始版本。但事实并非如此

-(void)save{
    NSError *err;
    NSString * docsDir = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
    NSString *oldFile = [self.webView.request.URL lastPathComponent];
    //Above line gets the actual HTML file name that's in the webview
    NSString * path = [docsDir stringByAppendingPathComponent:oldFile];
    //The following line gets what html code is in the actual webview
    NSString *html = [self.webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('html')[0].innerHTML"];

    [html writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:nil];
}
似乎没有写入任何文件。它不会覆盖原始文件,也不会编写新文件


也许我不应该这样保存它,但是我想不出任何其他的方法来保存它

两个观察结果:1。您可能希望实际将
&err
传递给
writeToFile
error
参数。检查结果并查看
err
是否为
nil
,如果不是,请查看error对象并查看其内容。话虽如此,我使用了
NSString
方法
writeToFile
,它会覆盖,所以我不确定问题出在哪里。2.与您的问题无关,使用
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)[0]构建
docsDir
可能更安全而不是手动构建“文档路径”。它是等效的,但可能更“经得起未来考验”。您可能还需要
NSLog
path
以确保它是您认为应该是的。path是正确的,我确保更早地记录它。我也不知道我怎么会忘了把错误放进去,粗心的错误。玩过之后,我注意到它确实可以工作,但前提是先查看另一个HTML文件。基本上,用户可以单击“新建”并创建一个新的HTML文件,并将其加载到UIWebView中。此时编辑后,将不会保存任何内容。我发现,
NSString*oldFile=[self.webView.request.URL lastPathComponent]返回零。但是,如果您创建另一个新的空白HTML文件(将自动加载到web视图),然后导航回原始HTML文件,它将正确保存。因此问题在于
oldFile
拉入web视图中显示的文件的url。但只有当文件第一次在中创建时,才能加载。使其正常工作。事实证明,在首次创建Web视图时将html文本添加到Web视图进行编辑时,我将
baseURL:
设置为nil<代码>[self.webView loadHTMLString:html baseURL:[文件绝对URL]]是正确的实现。再次,粗心的错误。但是感谢您的帮助和
docsDir
提示。