A type-safe swifty wrapper around NSCache.
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"),])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()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)letvalue= cache.retrieve(at:.myKey)cache.remove(at:.myKey)This library provides some helpers for easy usage on tests such as:
An implementation of Cache that does nothing when called.
letcache=Cache.noopAn 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.