[快速学会Swift第三方库] HanekeSwift篇

简介: [快速学会Swift第三方库] HanekeSwift篇Haneke是一个轻量级的缓存,为UIImage,JSON,NSData,String提供记忆和LRU磁盘缓存。目录快速学会Swift第三方库 HanekeSwift篇目录编码之前导入HanekeSwift其他操作使用缓存NSData示例代码运行结果JSON测

[快速学会Swift第三方库] HanekeSwift篇

Haneke是一个轻量级的缓存,为UIImage,JSON,NSData,String提供记忆和LRU磁盘缓存。

目录

编码之前

编码之前

导入HanekeSwift

推荐使用CocoaPods进行导入,CocoaPods是一个负责管理iOS项目中第三方开源库的工具,安装CocoaPods之后使用命令行就能轻松地对所有第三方开源库进行安装和更新,而不需要每次上GitHub去下载。
CocoaPods的安装过程传送门:iOS 9 导入类库全面详尽过程(Ruby安装->CocoaPods安装->导入类库)
手动下载:GitHub-Haneke主页

装好CocoaPods后,修改Podfile文件内容为如下:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'
use_frameworks!

target 'Web' do
pod 'HanekeSwift'
end
xcodeproj 'Desktop/Web/Web.xcodeproj'

target后面为工程名,最后一行为工程路径(这里的Web是我的工程名)

再执行命令:

$ pod install

其他操作

另外还需要在Target->工程名->Build Settings->Search Paths->User Header Search Paths处添加HanekeSwift所在的目录:

这里写图片描述

最后在你需要用到HanekeSwift的类中加上:

import Haneke

使用缓存

NSData

示例代码

let url = NSURL(string:"http://blog.csdn.net/sps900608")!
        let data = NSData(contentsOfURL: url)!

        let cache = Shared.dataCache
        //存入缓存
        cache.set(value: data, key: "data")
        //获取缓存
        cache.fetch(key: "data") { (cacheData) in
            self.webView.loadData(cacheData, MIMEType: "text/html", textEncodingName: "utf-8", baseURL: NSURL())
        }

运行结果

这里写图片描述

JSON

更多关于JSON的用法,可以参考
[快速学会Swift第三方库] SwiftyJSON篇
Swift学习笔记(2)网络数据交换格式(XML,JSON)解析

测试接口

在浏览器中打开”https://api.github.com/users/haneke“可以看到:

{
  "login": "Haneke",
  "id": 8600207,
  "avatar_url": "https://avatars.githubusercontent.com/u/8600207?v=3",
  "gravatar_id": "",
  "url": "https://api.github.com/users/Haneke",
  "html_url": "https://github.com/Haneke",
  "followers_url": "https://api.github.com/users/Haneke/followers",
  "following_url": "https://api.github.com/users/Haneke/following{/other_user}",
  "gists_url": "https://api.github.com/users/Haneke/gists{/gist_id}",
  "starred_url": "https://api.github.com/users/Haneke/starred{/owner}{/repo}",
  "subscriptions_url": "https://api.github.com/users/Haneke/subscriptions",
  "organizations_url": "https://api.github.com/users/Haneke/orgs",
  "repos_url": "https://api.github.com/users/Haneke/repos",
  "events_url": "https://api.github.com/users/Haneke/events{/privacy}",
  "received_events_url": "https://api.github.com/users/Haneke/received_events",
  "type": "Organization",
  "site_admin": false,
  "name": "Haneke",
  "company": null,
  "blog": null,
  "location": null,
  "email": null,
  "hireable": null,
  "bio": "A lightweight zero-config image cache for iOS, in Swift and Objective-C.",
  "public_repos": 4,
  "public_gists": 0,
  "followers": 0,
  "following": 0,
  "created_at": "2014-08-30T17:18:40Z",
  "updated_at": "2015-04-27T16:41:09Z"
}

示例代码

func jsonCache()  {
        let url = NSURL(string: "https://api.github.com/users/haneke")!
        let cache = Shared.JSONCache

        cache.fetch(URL: url) { (json) in
            print(json.dictionary?["bio"])
        }
    }

运行结果

Optional(A lightweight zero-config image cache for iOS, in Swift and Objective-C.)

UIImage和String

与NSData,JSON用法类似,只是定义Cache时有点区别:

let cache = Shared.imageCache
let cache = Shared.stringCache

UIImage的拓展用法

示例代码

func imageCache()  {
        let url = NSURL(string: "http://www.51work6.com/service/download.php?email=scuxiatian@foxmail.com&FileName=test1.jpg")!
        imageView.hnk_setImageFromURL(url)
    }

或者

    func imageCache()  {
        let url = NSURL(string: "http://www.51work6.com/service/download.php?email=scuxiatian@foxmail.com&FileName=test1.jpg")!
        let data = NSData(contentsOfURL: url)!
        let image = UIImage(data: data)!

        imageView.hnk_setImage(image, key: "test")
    }

运行结果

这里写图片描述

fetcher的其他用法

    func useFetcher()  {
        let url = NSURL(string: "http://www.51work6.com/service/download.php?email=scuxiatian@foxmail.com&FileName=test1.jpg")!
        let fetcher = NetworkFetcher<UIImage>(URL: url)

        let cache = Shared.imageCache
        cache.fetch(fetcher: fetcher).onSuccess { (image) in
            self.imageView.image = image
        }
    }

运行效果与前面完全相同

深入学习

这里只列出了最常用的几种用法,如果你希望能够更加深入地学习HanekeSwift,可以前往GitHub-Haneke主页

目录
相关文章
|
缓存 JSON 安全
43 Swift中的一些第三方库
Swift中的一些第三方库
207 0
|
iOS开发 Swift Perl
[快速学会Swift第三方库] Eureka篇
[快速学会Swift第三方库] Eureka篇 Eureka可以帮你简单优雅的实现动态table-view表单。它由rows,sections和forms组成。如果你的app包含大量表单,Eureka可以真正帮你节省时间。 目录 快速学会Swift第三方库 Eureka篇 目录 编码之前 导入 Eureka 其他操作 创建表单 基础表单 选择类型表
3271 0
|
缓存 iOS开发 Swift
[快速学会Swift第三方库] Kingfisher篇
[快速学会Swift第三方库] Kingfisher篇 Kingfisher是一个轻量的下载和缓存网络图片库。下载和缓存是异步进行操作,已经下载好的图片会缓存在内存和本地,极大得提高app的体验。 目录 快速学会Swift第三方库 Kingfisher篇 目录 编码之前 导入 Kingfisher 其他操作 基础操作 使用optionsInfo参数
7630 0
|
JSON 数据格式 iOS开发
[快速学会Swift第三方库]AlamofireObjectMapper
[快速学会Swift第三方库]AlamofireObjectMapper篇 通常网络请求返回的是JSON数据,使用ObjectMapper可以让JSON数据直接转化为对象,而使用Alamofire进行网络请求时,使用AlamofireObjectMapper可以直接返回对象,更加简洁。 Alamofire的使用:[快速学会Swift第三方库] Alamofire篇 Ob
3771 0
|
JSON 数据格式 iOS开发
[快速学会Swift第三方库] SwiftyJSON篇
[快速学会Swift第三方库] SwiftyJSON篇 SwiftyJSON使得用Swift处理JSON数据更加容易。这是解析JSON字符串封装类。实现功能与Javascript中的JSON.parse相近,使用方便。 目录 快速学会Swift第三方库 SwiftyJSON篇 目录 编码之前 导入SwiftyJSON 其他操作 解析本地JSON 示
3194 0
|
JSON 数据格式 iOS开发
[快速学会Swift第三方库] Alamofire篇
[快速学会Swift第三方库] Alamofire篇 Alamofire是 Swift 语言的 HTTP 网络开发工具包,AFNetworking的 Swift 版,使用起来相当简单。 目录 快速学会Swift第三方库 Alamofire篇 目录 编码之前 导入Alamofire 其他操作 Web请求 示例代码 运行结果 数据请求JSON 示
2339 0
|
SQL 数据库 iOS开发
[快速学会Swift第三方库] SQLite.swift篇
[快速学会Swift第三方库] SQLite.swift篇 SQLite.swift 是一个使用纯 Swift 语言封装 SQLite3 的操作框架。 特性: 简单的查询和参数绑定接口 安全、自动类型数据访问 隐式提交和回滚接口 开发者友好的错误处理和调试 文档完善 通过广泛测试 目录 快速学会Swift第三方库 SQLiteswift篇 目录 编码之
4871 0
|
4月前
|
Unix 调度 Swift
苹果iOS新手开发之Swift 中获取时间戳有哪些方式?
在Swift中获取时间戳有四种常见方式:1) 使用`Date`对象获取秒级或毫秒级时间戳;2) 通过`CFAbsoluteTimeGetCurrent`获取Core Foundation的秒数,需转换为Unix时间戳;3) 使用`DispatchTime.now()`获取纳秒级精度的调度时间点;4) `ProcessInfo`提供设备启动后的秒数,不表示绝对时间。不同方法适用于不同的精度和场景需求。
156 3
|
7天前
|
安全 Swift iOS开发
Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法
本文深入探讨了 Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法。Swift 以其简洁、高效和类型安全的特点,结合 UIKit 丰富的组件和功能,为开发者提供了强大的工具。文章从 Swift 的语法优势、类型安全、编程模型以及与 UIKit 的集成,到 UIKit 的主要组件和功能,再到构建界面的实践技巧和实际案例分析,全面介绍了如何利用这些技术创建高质量的用户界面。
16 2