我有两个问题,将一些Android代码移植到iPhone上。首先,我需要一些类似于LoadDataWithBaseURL的东西。问题是这个。在代码中,我生成一个网页。该页面使用Javascript做了一些时髦的事情,世界很好。在droid上工作正常,我生成,发送到webview的活动,然后使用LoadDataWithBaseURL。
不幸的是,在iPhone上,它第一次运行。如果我向页面添加内容并重新发送,我会在列表中显示第一个显示内容而不是其他内容。这是使用LoadHtmlString。
string contentDirectoryPath = Path.Combine (NSBundle.MainBundle.BundlePath, "Content/");
this.BeginInvokeOnMainThread (delegate {
this.webView.LoadHtmlString (myGeneratedPage, new NSUrl (contentDirectoryPath, true));
});
有一个名为LoadData的monotouch方法看起来很相似,但我不清楚NSData数据是否与android app上的字符串数据相同。
一个更简单的解决方案可能是清除缓存...但是,如果我需要执行应用缓存或 safari的缓存,我不知道如何解决这个问题。
我环顾四周,有一个解决方案,但它是在客观的C而不是单调。与Java到C#不同,我没有碰过obj-c,所以不知道从哪里开始。
非常感谢任何有关这些的帮助
PFJ
答案 0 :(得分:3)
我一直在处理我一直在研究的iPhone Monotouch项目中的缓存。
关于更简单的解决方案,要清除应用程序缓存我执行此操作:
NSUrlCache cache = NSUrlCache.SharedCache;
cache.RemoveAllCachedResponses();
我知道SharedCache的名称似乎表明它将是一个跨应用程序缓存,但我发现清除Safari的缓存对我的应用程序的缓存没有影响。 iPhone上的Plus应用程序都是沙盒,所以我不认为你可以清除Safari的缓存。
我使用iPhone模拟器的经验表明,行NSUrlCace.SharedCache
为应用程序创建了一个缓存。通过导航到Mac上的此文件夹可以看到这一点:
Library/ApplicationSupport/iPhone Simulator/6.0/<your app id>/Library/Caches/
应该有一个包含您的包名称的文件夹,其中包含一个名为“Cache.db”的文件。我认为在这个位置存在这个文件还支持它是应用程序缓存的事实,所以你应该安全地清除它等。
由于MonoTouch网站上没有太多关于NSUrlCache的文档以及它们如何实现它们的方法,因此这是我能够解决的最佳方法。
希望您能找到一些方法来使用缓存清除来解决您的问题。
答案 1 :(得分:0)
LoadData的参数是包含HTML内容的NSData。