0

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

一个更简单的解决方案可能是清除缓存......但同样,我不知道如何做,如果我需要做应用程序缓存safari 的缓存,这会令人困惑。

我环顾四周,有一个解决方案,但它是在目标 C 中,而不是单点触控。不像Java到C#,我没有接触过obj-c,所以不知道从哪里开始。

任何有关这些的帮助将不胜感激

PFJ

4

2 回答 2

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 以及它们如何实现方法的文档,因此这是我能想到的最好的方法。

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

于 2012-10-24T15:06:29.027 回答
0

LoadData 的参数是一个包含 HTML 内容的 NSData。

于 2012-10-21T15:32:19.553 回答