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

Cleanup
    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 4mo ago