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.
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
ToMany improvements
applyToDb()
now puts new objects automatically; you do not have to put them individually an
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
Fixes for ToMany
Several internal improvements, e.g. query links are resolved faster
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.
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.
Fix for the 1.1 "realpath" error during build on machines without Homebrew coreutils.
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
Fix bug that prevented code generator from working in projects that use SwiftPM
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.
iOS hotfix
Fixed "Storage error code 78" for iOS
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 enum
s and other user-defined types
Data
and [UInt8]
are now supported as property types.
Binaries: Swift 5 ABI only
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 String
s, 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
Swift 5 and Build Improvements
Binaries: Swift 5 ABI only
ObjectBox setup script can now also be used without CocoaPods​
ObjectBox can now be used in frameworks​
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)
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.
Alpha 5
Code generation fixes for optionals
Expanded example app to demo optionals
Fixes for Date-decoding into entities
Binaries: Swift 4 ABI only
Cleanup
Just small things. Also an elephant.
iOS Sandboxing.
Fixed issues that could occur when deploying to device.
Added auto-registration of your entities
Alpha 2
Fix an issue related to "duplicate index ID" error message.
Alpha 1
Initial public release for comment.