ObjectBox alternatives and similar libraries
Based on the "Database" category.
Alternatively, view ObjectBox embedded database alternatives based on common mentions on social networks and blogs.
-
Realm
The alternative to CoreData and SQLite: Simple, modern and fast. -
MMKV
An efficient, small mobile key-value storage framework developed by WeChat. Works on iOS, Android, macOS and Windows. -
WCDB
WCDB is an efficient, complete, easy-to-use mobile database framework for iOS, macOS. -
YapDatabase
YapDatabase is an extensible database for iOS & Mac. -
ParseAlternatives
A collaborative list of Parse alternative backend service providers. -
SugarRecord
Data persistence management library written in Swift 2.0 -
Couchbase Mobile
Couchbase document store for mobile with cloud sync. -
FCModel
An alternative to Core Data for people who like having direct SQL access. -
UserDefaults
Simple, Strongly Typed UserDefaults for iOS, macOS and tvOS -
CTPersistance
iOS Database Persistence Layer with SQLite, your next Persistence Layer! -
MongoKitten
A pure Swift MongoDB client implementation with support for embedded databases. -
Prephirences
Prephirences is a Swift library that provides useful protocols and convenience methods to manage application preferences, configurations and app-state. -
Unrealm
Unrealm enables you to easily store Swift native Classes, Structs and Enums into Realm. -
RealmIncrementalStore
Realm-powered Core Data persistent store. -
UserDefaultsStore
An easy and very light way to store and retrieve -reasonable amount- of Codable objects, in a couple lines of code. -
PredicateEditor
A visual editor for dynamically creating NSPredicates to query data in your iOS app. -
Nora
Nora is a Firebase abstraction layer for working with FirebaseDatabase and FirebaseStorage. -
realm-cocoa-converter
A library that provides the ability to import/export Realm files from a variety of data container formats. -
MySQL
A Swift wrapper around the MySQL client library, enabling access to MySQL servers. Part of the Perfect project, but stand-alone. SPM and Swift 3 support. -
SecureDefaults
A lightweight wrapper over UserDefaults/NSUserDefaults with an extra AES-256 encryption layer. -
RealmGeoQueries
RealmGeoQueries simplifies spatial queries with Realm Cocoa. In the absence of and official functions, this library provide the possibility to do proximity search. -
PersistentStorageSerializable
Swift library that makes easier to serialize the user's preferences (app's settings) with system User Defaults or Property List file on disk. -
PersistenceKit
Store and retrieve Codable objects to various persistence layers, in a couple lines of code. -
YapDatabaseExtensions
YapDatabase extensions for use with Swift -
TypedDefaults
TypedDefaults is a utility library to type-safely use NSUserDefaults. -
MongoDB
A Swift wrapper around the mongo-c client library, enabling access to MongoDB servers. Part of the Perfect project, but stand-alone. SPM and Swift 3 support. -
PostgreSQL
A Swift wrapper around the libpq client library, enabling access to PostgreSQL servers. Part of the Perfect project, but stand-alone. SPM and Swift 3 support. -
FileMaker
A Swift wrapper around the FileMaker XML Web publishing interface, enabling access to FileMaker servers. Part of the Perfect project, but stand-alone. SPM and Swift 3 support. -
Storez
Safe, statically-typed, store-agnostic key-value storage (with namespace support). -
SQLite
A Swift wrapper around the SQLite 3 client library, enabling access to SQLite servers. Part of the Perfect project, but stand-alone. SPM and Swift 3 support. -
Redis
A Swift wrapper around the Redis client library, enabling access to Redis. Part of the Perfect project, but stand-alone. SPM and Swift 3 support.
Scout APM - Leading-edge performance monitoring starting at $39/month
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest. Visit our partner's website for more details.
Do you think we are missing an alternative of ObjectBox or a related project?
README
ObjectBox Swift
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")
}.build()
let oldClauses = query.find()
Want details? Read the guides or check out the API docs.
Adding ObjectBox to your project
CocoaPods is recommended to set up ObjectBox in your project.
See the installation docs for alternative setups,
or the New to CocoaPods? section below for a quick intro.
To install the ObjectBox
pod, add the following line to your Podfile:
pod 'ObjectBox'
Then run this to install the ObjectBox framework:
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
And, don't forget to close the Xcode project (.xcodeproj) and open the workspace (.xcworkspace) instead. Now, you are all set to define your first ObjectBox entities; e.g. check the getting started guide or the example described below.
New to CocoaPods?
CocoaPods is a dependency manager and sets up libraries like ObjectBox in your Xcode project. To install it, run this in a terminal:
sudo gem install cocoapods
In CocoaPods, you keep track of used libraries in a file called "Podfile". If you don't have this file yet, navigate to your Xcode project folder and use CocoaPods to create one:
pod init
CocoaPods troubleshooting
If pod install
fails, try updating CocoaPods first:
gem update xcodeproj && gem update cocoapods && pod repo update
Swift versions
Here's a list of ObjectBox releases, and the Swift versions they were compiled with:
ObjectBox version(s) | Swift version |
---|---|
1.4.1 | 5.3 |
1.3, 1.4.0 | 5.2 |
1.2 | 5.1 |
This might be relevant, e.g. when using Carthage. For various reasons, we recommend using the latest version.
Example
In the [Example](Example/) directory, you'll find a "Notes" example app demonstrating ObjectBox's Swift API. The example comes with two apps: one for iOS and one for macOS. The iOS example is a full GUI application, whereas the macOS example runs a few operations and then exits.
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.
How can ObjectBox Help You?
We want ObjectBox to be not only the fastest, but also the most Swift-friendly persistence solution.
To do that, we want your feedback: what do you love? What's amiss? Where do you struggle in everyday app development?
We're looking forward to receiving your comments and requests:
- Take this short questionaire (takes only 1 or 2 minutes)
- Add GitHub issues and
- Upvote issues you find important by hitting the ๐/+1 reaction button!
Thank you!
Keep in touch
Sign up here for future updates on ObjectBox Swift.
For general news on ObjectBox, check our blog or follow @ObjectBox_io on Twitter.
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 a fork of Sourcery for this.
Source code
Source code for ObjectBox's Swift binding can be found [in the Source folder](Source/README.md).
Other languages/bindings
ObjectBox is a multi platform database supporting multiple languages:
- ObjectBox Java: runs on Android, desktop and servers.
- ObjectBox Go: great for data-driven tools and server applications.
- ObjectBox C and C++: native speed with zero copy access to FlatBuffer objects; also enables porting ObjectBox to other languages.
- ObjectBox Dart/Flutter: build cross-platform apps using Flutter (beta version)
License
All files in this repository are under the Apache 2 license:
Copyright 2018-2020 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.
*Note that all licence references and agreements mentioned in the ObjectBox README section above
are relevant to that project's source code only.