Xamarin.ios monotouch等效于LoadDatalWithBaseURL&;清空缓存

Xamarin.ios monotouch等效于LoadDatalWithBaseURL&;清空缓存,xamarin.ios,xamarin.android,Xamarin.ios,Xamarin.android,我在将一些Android代码移植到iPhone上时遇到了两个问题。首先,我需要一些与LoadDataWithBaseURL类似的东西。问题是这个。在代码中,我生成了一个网页。这个页面使用Javascript做了一些有趣的事情,整个世界都很好。在droid上运行良好,我生成并发送到webview的活动,然后使用LoadDataWithBaseURL 不幸的是,在iPhone上,它第一次工作。如果我向页面中添加了一些内容并重新发送,我会得到列表中第一个要显示的内容,而没有其他内容。这是使用LoadH

我在将一些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应用程序上的字符串数据相同

一个更简单的解决方案可能是清除缓存。。。但是,我也不知道该怎么做,如果我需要应用缓存或safari的缓存,这让我很困惑

我环顾四周,找到了一个解决方案,但它是在objective C中,而不是MonotTouch。与Java到C不同,我没有接触过obj-C,所以不知道从哪里开始

在此方面的任何帮助都将不胜感激


PFJ

加载数据的参数是包含HTML内容的NSData。

加载数据的参数是包含HTML内容的NSData。

我一直在处理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/
Library/ApplicationSupport/iphonesimulator/6.0//Library/Caches/
应该有一个包含包名的文件夹和一个名为“Cache.db”的文件。我认为这个文件在这个位置的存在进一步支持了这个事实,即它是应用程序的缓存,所以您应该安全地清除它等等

由于MonoTouch网站上没有太多关于NSUrlCache及其实现方法的文档,因此这是我能做的最好的了


希望您能找到一些使用缓存清除的方法来解决您的问题。

我一直在一个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/
Library/ApplicationSupport/iphonesimulator/6.0//Library/Caches/
应该有一个包含包名的文件夹和一个名为“Cache.db”的文件。我认为这个文件在这个位置的存在进一步支持了这个事实,即它是应用程序的缓存,所以您应该安全地清除它等等

由于MonoTouch网站上没有太多关于NSUrlCache及其实现方法的文档,因此这是我能做的最好的了


希望您能找到一些使用缓存清除来解决问题的方法。

现在的代码如下所示:string contentDirectoryPath=Path.Combine(NSBundle.MainBundle.BundlePath,“Content/”;NSData myPage=NSData.FromString(myGeneratedPage);webView.AllowsInlineMediaPlayback=true;webView.BeginInvokeMainThread(委托{webView.LoadData(myPage,“text/html”,“UTF-8”,new NSUrl(contentDirectoryPath,true));现在看起来应该是正确的。但这仍然没有给出预期的结果(生成新内容的页面).在droid上,我可以将contentURL设置为null。在iPhone上如何实现此操作?现在的代码如下:string contentDirectoryPath=Path.Combine(NSBundle.MainBundle.BundlePath,“Content/”);NSData myPage=NSData.FromString(myGeneratedPage);webView.allowInlineMediaPlayback=true;webView.beginInvokenMainThread(委托{webView.LoadData(myPage,“text/html”,“UTF-8”,new-NSUrl(contentDirectoryPath,true));看起来现在应该是正确的。但这仍然没有给出预期的结果(生成了新内容的页面)。在droid上,我可以将contentURL设置为null。在iPhone上如何做到这一点?