This repository has been archived by the owner on Aug 8, 2024. It is now read-only.
0.5
New features
Promise
can now be canceled. Callcancel()
to cancel aPromise
. Be notified of a canceled operation with theonCancel
function. UseonCancel
to setup the cancel behavior of your custom operation. Remember that an operation can only be canceled once, and can only be executing, canceled, failed or succeeded at any given time.- It's now possible to apply a condition to a
OneWayTransformer
. You can callconditioned
on the instance ofOneWayTransformer
to decorate and pass the condition on the input. This means you can effectively implement conditioned key transformations onCacheLevel
s. Moreover, you can implement conditioned post processing transformations as well. For this, though, keep in mind that the input of theOneWayTransformer
will be the output of the cache, not the key. - It's now possible to apply a condition to a
TwoWayTransformer
. You can callconditioned
on the instance ofTwoWayTransformer
to decorate and pass two conditions: the one to apply for the forward transformation and the one to apply for the inverse transformation, that will take of course different input types. This means you can effectively implement conditioned value transformations onCacheLevel
s. - A new
NSUserDefaultsCacheLevel
is now included inCarlos
. You can use thisCacheLevel
to persist values onNSUserDefaults
, and you can even use multiple instances of this level to persist sandboxed sets of values - It's now possible to dispatch a
CacheLevel
or a fetch closure on a given GCD queue. Use thedispatch
protocol extension or the~>>
operator and pass the specificdispatch_queue_t
. Global functions are not provided since we're moving towards a global-functions-free API forCarlos 1.0
Major changes
- API Breaking:
CacheRequest
is now renamed toFuture
. All the public API returnFuture
instances now, and you can usePromise
for your custom cache levels and fetchers - API Breaking:
OneWayTransformer
andTwoWayTransformer
are now asynchronous, i.e. they return aFuture<T>
instead of aT
directly - API Breaking: all the
conditioned
variants now take an asynchronous condition closure, i.e. the closure has to return aFuture<Bool>
instead of a(Bool, ErrorType)
tuple - All the global functions are now deprecated. They will be removed from the public API with the release of
Carlos 1.0
Minor improvements
Promise
can now be initialized with anOptional<T>
and anErrorType
, correctly behaving depending on the optional valuePromise
now has amimic
function that takes aFuture<T>
and succeeds or fails when the givenFuture
does soImageTransformer
now applies its tranformations on a background queueJSONTransformer
now passes the right error when the transformations failCacheProvider.dataCache
now pools requests on the network and disk levels, so pooled requests don't result in multipleset
calls on the disk level- It's now possible to
cancel
operations coming from aNetworkFetcher
Int
,Float
,Double
andCharacter
conform toExpensiveObject
now with a unit (1
) cost- Added a
MIGRATING.md
to the repo and to the Wiki that explains how to migrate to new versions ofCarlos
(only for breaking changes)