登录 立即注册
金钱:

Code4App-iOS开发-iOS 开源代码库-iOS代码实例搜索-iOS特效示例-iOS代码例子下载-Code4App.com

iOS缓存Swift框架 - Mattress

[复制链接]
来自: 李世铿 分类: iOS精品源码 上传时间: 2017-3-8 19:23:16
Tag:swift 网络缓存 github cocoapos 开发

项目介绍:

项目简介
Mattress是一个将整个web页面储存到磁盘缓存中的Swift框架,不同于NSURLCache,但是两者可以共同作用。这对更快的预缓存Web组件,以及使Web组件可用于脱机浏览,都是十分有用的。

安装

Mattress包含一个CommonCrypto的封装,所以你可以在Swift中很方便的使用。你要保证Mattress和CommonCrypto框架都include到你的项目中。

Carthage(推荐)

首先需要安装Carthag e: Homebrew

$ brew update
$ brew install carthage
之后可将本项目添加到你的Carfile中

github "buzzfeed/Mattress" >= 1.0.0
然后你需要用Carthage建立,手动将Mattress和CommonCrypto框架集成到你的项目中。

$ carthage build
CocoaPods

首先使用RubyGems安装CocoaPods

$ gem install cocoapods
安装之后将该项目添加到Podfile

pod 'Mattress', '~> 1.0.0'
使用方法

首先要创建一个URLCache实例,在你的 application:didFinishLaunching: method 中将它设置为你的应用程序的共享缓存。

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

let kB = 1024
let MB = 1024 * kB
let GB = 1024 * MB
let isOfflineHandler: (() -> Bool) = {
    // This is for demonstration only.
    // You should use Reachability or your preferred method to determine offline status
    // and return a proper value here.
    return false
}
let urlCache = Mattress.URLCache(memoryCapacity: 20 * MB, diskCapacity: 20 * MB, diskPath: nil,
    mattressDiskCapacity: 1 * GB, mattressDiskPath: nil, mattressSearchPathDirectory: .DocumentDirectory,
    isOfflineHandler: isOfflineHandler)

NSURLCache.setSharedURLCache(urlCache)
return true

}
为了在Mattress磁盘缓存中缓存一个网页,简单的调用URLCache的 diskCacheURL:loadedHandler: method。

NSLog("Caching page")
let urlToCache = NSURL(string: "https://www.google.com")
if let

cache = NSURLCache.sharedURLCache() as? Mattress.URLCache,
urlToCache = urlToCache

{

cache.diskCacheURL(urlToCache, loadedHandler: { (webView) -> (Bool) in
        /*
           Note: The below code should work for fairly simple pages. However, if the page you are
           attempting to cache contains progressively / lazily loaded images or other assets you
           will also need to trigger any JavaScript functions here to mimic user actions and
           ensure those assets are also loaded before returning true.
        */
        let state = webView.stringByEvaluatingJavaScriptFromString("document.readyState")
        if state == "complete" {
            // Loading is done once we've returned true
            return true
        }
        return false
    }, completeHandler: { () -> Void in
        NSLog("Finished caching")
    }, failureHandler: { (error) -> Void in
        NSLog("Error caching: %@", error)
})

}
缓存成功之后,你可以在一个UIWebView中简单的加载,它可以从Mattress缓存中加载,就像魔法一样。

github地址:https://github.com/buzzfeed/mattress

code4app

相关源码推荐:

我来说两句
*滑动验证:
所有评论(18)
hellokenken 2017-3-8 19:23:35
code4app确实是个好地方,必须支持~
回复
AlonMessi 2017-3-8 19:23:43
感谢大神分享,必须顶!
回复
littleRed 2017-3-8 19:23:54
帮帮顶顶!!
回复
phoiu 2017-3-8 19:23:56
写的真的很不错
回复
BlueManlove 2017-3-8 19:25:38
code4app确实是个好地方,必须支持~
回复
kengsir 2017-3-8 19:29:47
帮帮顶顶!!
回复
code4app热心网友 2017-3-9 11:26:21
学习学习!
回复
code4app热心网友 2017-3-10 11:43:15
学习学习!
回复
code4app热心网友 2017-3-10 15:01:35
淡定,淡定,淡定……
回复
12下一页
提取码:  下载次数:22 状态:已购或VIP 售价:0(原价:10)金钱 下载权限:初级码农 
1965 0 22
联系我们
首页/微信公众账号投稿

帖子代码编辑/版权问题

QQ:435399051,742864542

如何获得代码达人称号?

代码贡献英雄榜
用户名 下载数
通过邮件订阅最新 Code4App 信息
上一条 /4 下一条
联系我们
关闭
合作电话:
13802416937
Email:
435399051@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| Github|申请友链|手机版|Code4App ( 粤ICP备15117877号-1 )

快速回复 返回顶部 返回列表