ObjectBox Swift Database Docs
ObjectBox is a NoSQL Swift object database for iOS providing high-performance on mobile devices. It is an easy-to-use Core Data alternative.
Welcome to the official documentation for ObjectBox Swift. Here's what you need for your first steps:
If you have any questions, check out the FAQ or contact us; we're here to help: contact [at] objectbox.io.

ObjectBox Change Log

1.6.0 - 2021-05-13

  • Experimental Swift Package Manager (SPM) support; added 2021-06-02
  • Build with Xcode 12.5 and Swift 5.4
  • Updated Sync protocol to V3
  • Internal improvements

1.5.0 - 2021-05-03

  • Added support for Apple Silicon (e.g. M1 ARM64-based CPU)
  • Switched packaging to XCFramework (note: this will help us with SwiftPM in the future, but currently breaks Carthage consumers)
  • Several updates to the Sync API
  • Several internal improvements
  • Built with Swift 5.3.2

1.4.1 - 2020-11-10

  • Several internal improvements under the hood; an indirect consequence is that Foundation is not implicitly imported anymore (you may have to add Foundation imports after upgrading)
  • New sync annotation
  • Build target for macOS set to 10.10 (was undefined before)
  • Built with Swift 5.3

1.4.0 - 2020-09-08

  • ToMany improvements
    • applyToDb() now puts new objects automatically; you do not have to put them individually anymore
    • New properties to probe the state: resolved and canInteractWithDb
    • A throwing resolveFromDb() to explicitly fetch the target objects allowing to catch errors before starting to interact with the target objects
    • getUncachedFromDb() and getUncachedIdsFromDb() for getting plain arrays from the database
    • Fixes: e.g. resolving now happens transactionally (improves performance too), removeAll() is now supported
  • ToOne: putting an object with a ToOne, now avoids to put already persisted related ToOne target object. Note: While this is a fix, it may be a breaking change if you relied on that behavior before.
  • Box: added a bulk get() for given IDs and renamed dictionaryWithEntities() to getAsDictionary()
  • Read-only stores
  • Added a version check to ensure that the library matches the generator
  • Reduced framework size by omitting outdated 32 bit versions

1.3.1 - 2020-06-29

  • Fixes for ToMany
  • Several internal improvements, e.g. query links are resolved faster

1.3.0 - 2020-05-11

  • Built with and for Swift 5.2
  • Fix sporadic "errno 12" while opening a DB on iOS devices
  • Lower deployment target to iOS 9.3 (seems to be still used by older iPads)
  • Fix for PropertyQuery (e.g. single line construction without holding on to Query)
  • API clean ups
    • Remove deprecated Query.all(); use find() instead
    • Box functions like visit(), for() and forEach() are now read-only by default. New optional writable flags changes this to use a write transaction instead.

1.2.0 - 2019-12-17

  • Added support for optional unsigned property types
  • Better type support for queries; e.g. unsigned and optional properties, Bool properties
  • Property queries compute sums and averages more precisely (improved algorithms and wider types)
  • Some Query API clean up, e.g. setting query parameters does not throw anymore, findUnique() always returns an optional result, etc.

1.1.1 - 2019-11-23

Fix for the 1.1 "realpath" error during build on machines without Homebrew coreutils.

1.1 - 2019-11-18

  • Experimental Carthage support (in addition to CocoaPods)
  • If a convert annotation on an enum has no explicit database type given, its RawType is used.
  • Various performance optimizations
  • Usability improvements, e.g.setup.rb now asks which project to use if there is more than one, and creates a non-empty *.generated.swift file to help with code completion.
  • Added put() with variable argument list, put(inout) for mutable structs, and putAndReturnIDs(). Upgrade note: put() itself no longer returns IDs.
  • Added variants of Box methods for ContiguousArray class, which are faster than the methods using standard arrays.
  • Anonymous build statistics can be turned off using --no-statistics

1.0.1 - 2019-10-01

  • Fix bug that prevented code generator from working in projects that use SwiftPM

1.0 - 2019-09-24

  • Relations in queries
  • Observer callbacks for data changes
  • Many-to-many relations
  • Asynchronous put/remove
  • Edit relations through their backlinks
  • API clean up; e.g. renames, simple IDs, simplifications, etc.
  • If you've been using pre-releases, you can find migration instructions in the Readme on Github.

0.9.1 - 2019-08-13

iOS hotfix
  • Fixed "Storage error code 78" for iOS

0.9.0 - 2019-07-22

Open Source Release
  • Source code for the Swift binding is now available
  • Reduced write/update time by about 25%
  • Rewrote the remaining Objective-C classes in Swift
  • Fix an issue reading an old entity written before a new, non-optional property was added to it
  • Improvements for people using SwiftLint in their projects
  • Added findIds(), visit()/forEach(). Added remove() for queries.
  • Improved support for enums and other user-defined types
  • Data and [UInt8] are now supported as property types.
  • Binaries: Swift 5 ABI only

0.8.0 - 2019-05-14

Struct Support and Performance Improvements
  • Immutable structs can now be used, you are no longer restricted to classes
  • We no longer throw NSError-based errors, they're all enum ObjectBoxError cases now
  • Strings that were created as NSStrings previously are now created as Swift Strings, which should reduce the number of unnecessary UTF-16/UTF-8 roundtrip conversions when Swift 5.1 arrives
  • New projects are now set up with separate generated source files for each target by setup.rb.
  • Binaries: Swift 5 ABI only

0.7.0 - 2019-04-02

Swift 5 and Build Improvements

0.6.0 - 2018-12-19

Model Migration
  • Your data model is now migrated transparently for you when you make changes
  • Properties can be indexed
  • You can require property fields to be unique
  • You can specify a different name for use in the model than the instance variable's
  • Use of ObjectBox without CocoaPods has been simplified
  • You do not need to annotate back-links in relations anymore in clear cases
  • Binaries: Swift 4 ABI only.
  • Alpha users:
    • Use annotations // objectbox: instead of // sourcery:
    • Delete any database files you created before (one time only, starting with the beta we have model migrations)

0.5.5 - 2018-11-29

Alpha 6
  • Remove code-generator limitations regarding order of properties vs. relations
  • Support sandboxed macOS applications (see macOS Sandbox setup)
  • Add "transient" annotation for skipping properties
  • Binaries: Swift 4 ABI only.

0.5.4 - 2018-11-27

Alpha 5
  • Code generation fixes for optionals
  • Expanded example app to demo optionals
  • Fixes for Date-decoding into entities
  • Binaries: Swift 4 ABI only

0.5.3 - 2018-11-26

  • Just small things. Also an elephant.

0.5.2 - 2018-11-22

iOS Sandboxing.
  • Fixed issues that could occur when deploying to device.
  • Added auto-registration of your entities

0.5.1 - 2018-11-19

Alpha 2
  • Fix an issue related to "duplicate index ID" error message.

0.5.0 - 2018-11-16

Alpha 1
  • Initial public release for comment.
Last modified 7mo ago