1. [YDB-84]: Updates to Swift 2.2

No significant changes, just updated for Swift 2.2 :)


  1. [YDB-73, YDB-77]: Improvements to README and documentation. Thanks @cdzombak!
  2. [YDB-74]: Improvements to CI & automation.
  3. [YDB-78]: Annotations the code base with MARK: -. Thanks again @cdzombak.
  4. [YDB-81]: Corrects the spelling of CocoaPods - thanks @ReadmeCritic!
  5. [YDB-83]: Switches CI scripts to use scan and update the Cartfile to point directly at YapDatabase.
  6. [YDB-82]: Updates CI pipeline to support Swift 2.1 & Swift 2.2 based branches.

Sorry this all took so long to get released - kinda dropped off my radar. Thanks to @cdzombak for improving the overall readability of the codebase!


  1. [YDB-70, YDB-71]: Changes changes necessary for compatibility with YapDatabase 2.7.4 which added sub-module support for most extensions.


  1. [YDB-68]: Fixes some issues with the remove API, to make it consistent with write. Also renamed the methods which return NSOperation instances to writeOperation and removeOperation respectively.


  1. [YDB-55]: Removes some leftover references to Saveable.
  2. [YDB-58]: Fixes support for Metadata, removes MetadataPersistable entirely.
  3. [YDB-56]: Adds readMetadataAtIndex functional API.
  4. [YDB-57]: Adds readAll functional API
  5. [YDB-59]: Updates APIs to use SequenceType instead of Array.
  6. [YDB-60]: Fixes documentation issues.
  7. [YDB-61]: Makes async completion block arguments optional, default to .None.
  8. [YDB-62]: Restores the return value behavior of the write functional API.
  9. [YDB-64]: Adds missing sequence type for value with value metadata pattern. Somehow missed this earlier.
  10. [YDB-65]: Adds a small Curried API, which returns closures accepting transactions.
  11. [YDB-66]: Updates the Persistable write API - no longer needs an intermediary generic type. Has correct return values.

Thanks a lot to Ryan (@aranasaurus) for helping me with all these changes - effectively a rewrite of the whole framework.


  1. [YDB-54]: Fixes a bug where using a writeBlockOperation on a connection would execute the block inside an asynchronous transaction. This results in the NSOperation finishing before the block had completed, most likely leading to unexpected behavior.


  1. [YDB-53]: Fixes to some typos in the README - thanks Ryan (@aranasaurus)!
  2. [YDB-52]: Modifies the project structure to support a “Functional” API only via CocoaPods subspecs. See Installation notes.


  1. [YDB-50]: Breaks up the Read & Write files to reduce the number of lines. Adds a lot more documentation to functions - ~ 64% documentation coverage.


  1. [YDB-42]: Refactors read & write API, correctly supporting metadata.
  2. [YDB-43]: Makes project cross-platform (iOS & Mac OS)
  3. [YDB-44]: Enables code coverage reporting with CodeCov.io, see reports here.
  4. [YDB-45]: Adds back functional API.
  5. [YDB-47]: Updates README.
  6. [YDB-48]: Removes Saveable, created ValueCoding as a standalone project and new dependency.


  1. [YDB-41]: Removes FRP extensions which don’t support Swift 2.0 yet.


  1. [YDB-38]: Preparations for Swift 2.0.


  1. [YDB-36]: Sets the required version of BrightFutures to the latest for Swift 1.2, which is 2.0.1.
  2. [YDB-37]: Sets the required version of PromiseKit to the latest for Swift 1.2, which is 2.2.1 (as submitted to CocoaPods).


  1. [YDB-25]: Adds YapDB.Search to aid with running FTS queries. An example of using with will be forthcoming (probably after Swift 2.0 has settled). But essentially, you can initialize it with your db, an array of YapDB.Fetch values (which should be views) and a string mapper. Then execute usingTerm(term: String) with the search term supplied by the user to run the search.
  2. [YDB-26]: Adds some missing default parameters for the YapDB.SecondaryIndex wrapper.
  3. [YDB-27]: Removes an explicit unwrap which could cause a crash if pattern matching against value types.
  4. [YDB-29]: Adds support to YapDatabaseConnection for writeBlockOperation (NSBlockOperation), write and remove APIs. This is great if you want to perform a number of writes of different types in the same transaction inside of an NSOperation based architecture, as you can do:
queue.addOperation(connection.writeBlockOperation { transaction in 

If you're using my Operations framework, as these operations are NSBlockOperations, use ComposedOperation to attach conditions or observers. E.g.

let write = ComposedOperation(connection.writeBlockOperation { transaction in 
write.addCondition(UserConfirmationCondition()) // etc etc
  1. [YDB-30]: Expands the YapDB.Mappings type to support the full YapDatabaseViewMappings gamut.
  2. [YDB-31]: Silences a warning in the removeAtIndexes API.


  1. [YDB-22]: Adds YapDB.Fetch.Index which wraps YapDatabaseSecondaryIndex extension.
  2. [YDB-23]: Fixes a crash which has been observed in some cases in a Release configuration where writing a value type can fail to get the type’s Archiver.
  3. [YDB-24]: Just cleans up some of the code.


  1. [YDB-19]: Implements Saveable on YapDB.Index. This makes it easier to store references between YapDatabase objects. In general this is preferable to storing references as let fooId: Foo.IdentifierType.
  2. [YDB-21]: Restructures the project. The framework is now in an Xcode project in framework, with its associated unit tests in place. This is in preparation for Xcode 7, to get code coverage of the framework. The Example has been moved to examples/iOS, although it doesn’t really do much, except provide some models.


  1. [YDB-16]: Adds helper APIs for creating a YapDatabase. Includes a function for creating temporary database for use inside unit tests.


  1. [YDB-1]: Adds API for reading metadata, additionally fixes bugs where writing types with metadata would fail when using database or connections.
  2. [YDB-15]: Updates README documentation.


  1. [YDB-6]: Improves the code documentation significantly. Updates the README.
  2. [YDB-12]: Improves and adds to the test coverage. Fixes an oversight where keys and indexes were not uniqued before accessing the database.


  1. [YDB-11]: Renames YapDatabase.Index to YapDB.Index.


  1. [YDB-7]: Support SequenceType in arguments where appropriate. This became a bit of a significant refactor.
  2. [YDB-10]: Adds this CHANGELOG
  3. [YDB-3]: Adds async read API