Skip to content

Repository files navigation

swift-cache

A type-safe swifty wrapper around NSCache.

Getting Started

Add swift-cache as a dependency to your project using SPM.

.package(url:"https://github.com/binaryscraping/swift-cache", from:"0.1.0"),

And in your application/target, add "Cache" to your "dependencies".

.target(
name:"YourTarget",
dependencies:[.product(name:"Cache",package:"swift-cache"),])

Usage

Cache is accessed through a Cache.Key type, so start by defining your keys.

extensionCache.Keywhere Value ==String{
// A key that stores a string value.
staticletmyKey=Cache.Key("my_key")}

Instantiate a live implementation of the cache type.

letcache=Cache.live()

Insert

cache.set("string value", at:.myKey)

You can provide an optional lifetime in seconds for the entry.

cache.set("string value", at:.myKey, lifetime:60)

Retrieve

letvalue= cache.retrieve(at:.myKey)

Remove

cache.remove(at:.myKey)

Usage in tests

This library provides some helpers for easy usage on tests such as:

Noop

An implementation of Cache that does nothing when called.

letcache=Cache.noop

Failing

An implementation of Cache that fails with an XCTFail call.

varsetEntryCalled=falseletcache=Cache.failing
.override(
setEntry:{ entry, key in setEntryCalled =true})
cache.set("string value", at:.myKey)XCTAssertTrue(setEntryCalled)

At the code snipped above all calls to a method that wasn't overriden will terminate with a XCTFail.

About

A type-safe swifty wrapper around NSCache.

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages