• Stars
    star
    213
  • Rank 185,410 (Top 4 %)
  • Language
    Swift
  • License
    MIT License
  • Created over 8 years ago
  • Updated over 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Swift caching library

Cache

Version Carthage compatible

A generic caching library for Swift. Cache depends on Foundation.

This is still very much a work in progress.

Usage

Cache provides a simple Cache protocol:

protocol Cache {
  associatedtype Element

  func get(key key: String, completion: (Element? -> Void))
  func set(key key: String, value: Element, completion: (() -> Void)?)
  func remove(key key: String, completion: (() -> Void)?)
  func removeAll(completion completion: (() -> Void)?)
}

There are two (well actually three, but we'll get there) provided caches:

  • MemoryCache โ€” Backed by an NSCache
  • DiskCache โ€” Backed by files on disk using NSFileManager

Using both of these is exactly the same interface.

MultiCache

There is a third cache provided called MultiCache. This combines caches.

let cache = MultiCache(caches: [memoryCache, diskCache])
cache.set(key: "foo", value: "bar")

This will write to all caches in parallel. When accessing the multi cache, it will go in order. In this example, it will try the memory cache and if there's a miss it will try the disk cache. If it were to find it in the disk cache, it will write it to all previous caches for faster future reads.

Thanks

Thanks to Caleb Davenport for unintentionally inspiring this and lots of help along the way.

More Repositories

1

SAMKeychain

Simple Objective-C wrapper for the keychain that works on Mac and iOS
Objective-C
5,401
star
2

sstoolkit

A collection of well-documented iOS classes for making life easier
Ruby
3,320
star
3

cheddar-ios

Cheddar for iOS
Objective-C
3,005
star
4

Countdown

Mac screensaver for counting down to a date
Swift
959
star
5

RateLimit

Simple utility for only executing code every so often.
Swift
919
star
6

SSPullToRefresh

Simple and highly customizable pull to refresh view
Objective-C
886
star
7

Clock.saver

Simple clock screensaver written in Swift
Swift
794
star
8

HotKey

Simple global shortcuts in macOS
Swift
759
star
9

GradientView

Easily use gradients in UIKit for iOS & tvOS
Swift
626
star
10

Motivation

Mac screen saver that terrifyingly shows your age
Swift
558
star
11

SyntaxKit

TextMate-style syntax highlighting
Swift
469
star
12

ssdatakit

Eliminate your Core Data boilerplate code
Objective-C
453
star
13

JSON

Micro framework for easily parsing JSON in Swift with rich error messages in less than 100 lines of code
Swift
386
star
14

Crypto

Swift CommonCrypto wrapper
Swift
329
star
15

hue

Work with Philips Hue from Ruby
Ruby
311
star
16

ssmessagesviewcontroller

iOS Messages.app style table view controller
Objective-C
283
star
17

X

Easier cross platform Mac & iOS development with Swift
Swift
278
star
18

cheddar-mac

Cheddar for Mac
Objective-C
256
star
19

valio

Valio Con 2014 Schedule
Swift
255
star
20

cheddarkit

Objective-C framework that powers Cheddar for iOS and Cheddar for Mac
Objective-C
239
star
21

ISO8601

ISO8601 date parser and writer
Swift
220
star
22

sscatalog

Deprecated demo of SSToolkit
Objective-C
195
star
23

SAMTextView

Add a placeholder to UITextView.
Objective-C
194
star
24

SAMCategories

A collection of useful Foundation and UIKit categories.
Objective-C
179
star
25

SAMBadgeView

Simple badge view for iOS
Objective-C
179
star
26

bully

Simple Pusher Objective-C client
Objective-C
172
star
27

coins

Bitcoin value tracker
Swift
165
star
28

Color

Color utilities for macOS, iOS, tvOS, and watchOS
Swift
156
star
29

quesadilla

Entity-style text parsing
Ruby
143
star
30

SAMSoundEffect

Play a sound effect
Objective-C
135
star
31

unmarkdown

Convert HTML to Markdown. Sometimes you just need to go the other way.
Ruby
132
star
32

WhatColorIsIt

Time of day as a color as a Mac screen saver
Swift
127
star
33

Diff

Simple diff library in pure Swift
Swift
120
star
34

contrast

Contrast for macOS
Swift
95
star
35

soff.es

My old website
CSS
95
star
36

apple_push_notification

Rails plugin for Apple Push Notifications
Ruby
94
star
37

Mixpanel

Unofficial Swift Mixpanel client
Swift
93
star
38

awfulrecruiters.com

Previously, a list of third-party recruiter domains
CSS
89
star
39

CommonCrypto

CommonCrypto Swift module
89
star
40

markdownr.com

A nifty markdown notepad
Ruby
89
star
41

Canvas

Hacking on the remains of Canvas. Nothing to see yet.
Swift
86
star
42

ssoauthkit

Handy iOS library for connecting to OAuth 1.0 providers and working with Twitter authentication
Objective-C
84
star
43

bar

My Cocktail Menu
Swift
77
star
44

lagunitas

A Ruby gem for inspecting iOS IPAs
Ruby
71
star
45

grater

CSS grids as easy to use as a cheese grater
Ruby
69
star
46

sspersonviewcontroller

Clone of Apple's ABPerson view controller in AddressBookUI.framework to allow for better customization.
Objective-C
68
star
47

sstableviewcell

A fast table view cell based on ABTableViewCell
Objective-C
66
star
48

SAMCircleProgressView

Determinate, circular progress view.
Objective-C
66
star
49

dotfiles

~soffes
Shell
62
star
50

ZoomIn

Safari extension for opening Zoom right away
Swift
61
star
51

SAMCoreImageView

Fast image view for CIImage's
Objective-C
58
star
52

json-benchmarks

Benchmarks of various JSON frameworks on iOS
Objective-C
58
star
53

spotlight-tools

Spotlight Tools for macOS
Swift
57
star
54

SAMCubicSpline

Cubic splines made easy.
Objective-C
57
star
55

SAMWebView

Push UIWebView to its limits
Objective-C
55
star
56

Pugs

Simple pug photo viewer for iOS
Swift
51
star
57

SAMTextField

Handy UITextField additions like insetting text.
Objective-C
50
star
58

ssindicatorlabel

Label + indicator
Objective-C
48
star
59

SharedWebCredentials

Swift library for easily working with Shared Web Credentials for iOS
Swift
48
star
60

sublime

My Sublime Text 3 configuration
47
star
61

words

Example Thesaurus app written in Swift
Swift
47
star
62

soffes.blog

Jekyll but more complicated than it needs to be because reasons
Ruby
46
star
63

playground

A simple Ruby gem for converting Markdown into Swift playgrounds
CSS
46
star
64

MarkdownKit

Fancy Markdown input with TextKit powered by CommonMark
C
43
star
65

home-old

Home Assistant configuration
YAML
42
star
66

binary_plist

Easily add the Apple Binary Plist format to your Rails controllers
Ruby
42
star
67

SAMLabel

A simple subclass of UILabel with vertical alignment and text insets.
Objective-C
40
star
68

whisky-fire

A glorious screen saver of Nick Offerman drinking whisky
Swift
35
star
69

findi

Find your iPhone through Apple's API's.
Ruby
33
star
70

coins-android

Coins for Android
Java
30
star
71

pizzazz

A simple, pure Ruby implementation of JSON code coloring
Ruby
30
star
72

universal-ipad-iphone-example

Example universal iPad/iPhone app
Objective-C
30
star
73

no-itunes

Joke invisible app to kill iTunes as soon as it launches
Swift
27
star
74

iphone-plist

iPhone plist tutorial
Objective-C
27
star
75

SAMContentMode

UIContentMode & CGRect Maths
Objective-C
27
star
76

fat

I'm fat.
JavaScript
24
star
77

SAMLoadingView

Simple loading views
Objective-C
20
star
78

Snake

Snake implemented in SwiftUI for macOS
Swift
19
star
79

Heads

Bust out of windows prototype
Swift
18
star
80

k-and-r

Code examples and exercises from the K&R
C
18
star
81

hire

Hire Me
CSS
17
star
82

SAMHUDView

Kinda okay HUD for iOS.
Objective-C
16
star
83

hands

Simple Poker Gem
Ruby
16
star
84

blog

Content for my blog
Ruby
16
star
85

useshares.com

Website for Shares iPhone app
CSS
15
star
86

tweets

All of my tweets.
JavaScript
14
star
87

tweets-from

Simple iPhone application using MapKit to visualize Twitter timeline locations.
Objective-C
14
star
88

shares-support

Supporting Files & Artwork for Shares
Ruby
14
star
89

van

Home Assistant configuration for my van
JavaScript
13
star
90

tomatomovies

Simple tweets when good new movies hit the theaters with their rating.
Ruby
13
star
91

SAMAddressBar

Clone of Safari's address bar from long ago.
Objective-C
13
star
92

sstoolk.it

SSToolkit Website
Ruby
13
star
93

langtons-ant

Langtonโ€™s Ant macOS screen saver written in Swift
Swift
12
star
94

samandellen.com

This is our little website
HTML
12
star
95

wwdchike.com

June 12th, 2016 โ€” 2pm at Lands End
HTML
12
star
96

usewhiskey.com

Whiskey Website
SCSS
12
star
97

discover

Ruby Gem for discovering UPNP devices with SSDP
Ruby
11
star
98

shares-l10n

Localization files for Shares
Ruby
11
star
99

getcoinsapp.com

Website for Coins
CSS
11
star
100

private-json-test

JSON parsing example with private iPhone frameworks
Objective-C
9
star