在将一些Android代码移植到iPhone上时,我遇到了两个问题。首先,我需要一些类似于LoadDataWithBaseURL的东西。问题是这个。在代码中,我生成一个网页。页面使用Javascript做了一些奇怪的事情,世界是美好的。在机器人上工作很好,我生成,发送到webview的活动,然后使用LoadDataWithBaseURL。
不幸的是,在iPhone上,它第一次工作。如果我在页面中添加了一些内容并重新发送,我将得到列表中要显示的第一件东西,而没有任何其他内容。这是和LoadHtmlString的。
string contentDirectoryPath = Path.Combine (NSBundle.MainBundle.BundlePath, "Content/");
this.BeginInvokeOnMainThread (delegate {
this.webView.LoadHtmlString (myGeneratedPage, new NSUrl (contentDirectoryPath, true));
});有一种名为LoadData的单调方法看起来很相似,但我不清楚NSData数据是否与安卓应用程序中的字符串数据相同。
一个简单的解决方案可能是清除缓存..。但是,我不知道该如何做,也不知道我是否需要做应用程序缓存或safari缓存。
我环顾四周,发现了一个解决方案,但它在目标C中,而不是单调的。与Java到C#不同的是,我没有接触obj-c,所以不知道从哪里开始。
如能在这些方面提供任何帮助,我们将不胜感激。
PFJ
发布于 2012-10-24 15:06:29
我一直在处理一个iPhone Monotouch项目中的缓存。
关于更简单的解决方案,为了清除应用程序缓存,我这样做:
NSUrlCache cache = NSUrlCache.SharedCache;
cache.RemoveAllCachedResponses();我知道SharedCache这个名字似乎表明它将是一个跨应用程序缓存,但是我发现清除Safari的缓存对我的应用程序的缓存没有任何影响。另外,iPhone上的应用程序都是大量的沙箱,所以我认为你不可能清除Safari的缓存。
我使用iPhone模拟器的经验表明,行NSUrlCace.SharedCache为应用程序创建了一个缓存。通过导航到Mac上的这个文件夹就可以看出这一点:
Library/ApplicationSupport/iPhone Simulator/6.0/<your app id>/Library/Caches/应该有一个包含包名的文件夹和一个名为"Cache.db“的文件。我认为这个文件在这个位置上的存在进一步支持了这样一个事实,即它是应用程序的缓存,所以您应该安全地清除它等等。
由于MonoTouch网站上没有太多关于NSUrlCache及其实现方法的文档,所以这是我所能做的最好的工作。
希望您能找到一些方法来使用缓存清除来解决您的问题。
发布于 2012-10-21 15:32:19
LoadData的参数是包含NSData内容的NSData。
https://stackoverflow.com/questions/12993511
复制相似问题