ObjectBox Swift - persisting your Swift objects superfast and simple
Switch branches/tags
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Example Add optional modification and creation date properties. Tests optiona… Nov 27, 2018
Source Typo fixes to source Readme. Nov 20, 2018
images add logo.png Nov 16, 2018
.gitignore Remove two outdated file paths from Gitignore. Nov 22, 2018
LICENSE.txt add LICENSE.txt Nov 15, 2018
README.md Script takes a name, not a path. Nov 26, 2018

README.md

ObjectBox Swift (Alpha)

Version Platform

ObjectBox is a superfast, light-weight object persistence framework. This Swift API seamlessly persists objects on-device for iOS and macOS.

let santa = Person(firstName: "Santa", lastName: "Claus")
try personBox.put(santa)

let query: Query<Person> = personBox.query {
    return (Person.firstName.contains("Santa") || Person.age > 100)
           && Person.lastName.isEqual(to: "Claus") 
}
let oldClauses = query.find()

Want details? Read the guides or check out the API docs.

Note: this is an early alpha not intended for production use just yet (details below).

Installation

ObjectBox is available through CocoaPods. To install the pod, simply add the following line to your Podfile:

pod 'ObjectBox'

Then run

cd /path/to/your/project/folder/ # whatever folder your Podfile is in.
pod install
Pods/ObjectBox/setup.rb myproject.xcodeproj # whatever your Xcode project is named

afterwards to install the framework and its dependencies, and set up the code generator in your project.

If pod install fails, try updating CocoaPods first:

gem update xcodeproj && gem update cocoapods && pod repo update

Example

In the Example directory, you find a notes example app demonstrating ObjectBox's Swift API. The example comes with two apps: one for iOS and one for macOS.

To setup the example, use CocoaPods to acquire the framework:

cd Example/
pod install # if that fails, update CocoaPods (see Installation)
Pods/ObjectBox/setup.rb

This will generate a NotesExample.xcworkspace that you can launch to try out ObjectBox.

Why We Released this Preview

Because your feedback is paramount! We want ObjectBox not only to be the fastest, but also to be the most Swift-friendly persistence solution. By releasing it early we can still make adjustments based on your input.

Thus, this preview is really all about you: what do you love? What's amiss? Where do you struggle in everyday app development?

We're looking forward to receive your comments and requests:

Thank you!

What's Missing in the Alpha?

ObjectBox Swift Alpha is a developer preview. It is not ready for production use yet! Consider the following limitations:

  • No binary compatibility of your on-disk data with future versions.
  • No model migrations: once you persist an entity with 2 properties, you cannot simply add a 3rd property. You have to reset the store (e.g. delete the database files) to start from scratch.
  • Incomplete functionality: missing relation types, indexes, data observers, object browser. This functionality is available at lower layers and has not yet been exposed to Swift.

Keep in touch

We're obviously not finished here. Sign up here for future updates on ObjectBox Swift.

For general news on ObjectBox, check our blog.

Background: Code generation

ObjectBox Swift generates code at build time for optimal performance at runtime by avoiding reflection etc. This is automatically done for you and should be transparent. Internally, we use Sourcery for this.

Other languages/bindings

ObjectBox is a multi platform database supporting multiple languages:

  • ObjectBox C API: native speed with zero copy access to FlatBuffer objects; also enables porting ObjectBox to other languages.
  • ObjectBox Java: runs on Android, desktop and even servers.

License

All files in this repository are under the Apache 2 license:

Copyright 2018 ObjectBox Ltd. All rights reserved.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.