Html 如何覆盖或保存现有的';是否在UIWebView中编辑?
该应用程序使用UIWebView加载本地HTML文件(现在仅为文本)进行编辑。我需要将用户编辑的内容保存回本地文件。这是我唯一能想到的方法: 一旦用户编辑了文本,我就编写了一个保存方法,该方法在web视图中获取当前HTML,并将其保存到一个HTML文件(与原始文件具有相同的文件名),该文件将写入documents目录。从理论上讲,这应该会覆盖原始版本。但事实并非如此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
-(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
提示。