Description
ObjectBox is a superfast, light-weight object persistence framework (aka a database). 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 = personBox.query {
return (Person.firstName.contains("Santa") || Person.age > 100)
&& Person.lastName.isEqual(to: "Claus")
}.build()
let oldClauses = query.find()
ObjectBox embedded database alternatives and similar libraries
Based on the "Data Management" category.
Alternatively, view ObjectBox embedded database alternatives based on common mentions on social networks and blogs.
-
SwiftyJSON
The better way to deal with JSON data in Swift. -
swift-algorithm-club
Algorithms and data structures in Swift, with explanations! -
FMDB v2.7
A Cocoa / Objective-C wrapper around SQLite -
Realm
Realm is a mobile database: a replacement for Core Data & SQLite -
SQLite.swift
A type-safe, Swift-language layer over SQLite3. -
ObjectMapper
Simple JSON Object mapping written in Swift -
GRDB.swift
A toolkit for SQLite databases, with a focus on application development -
LeetCode_Swift
Solutions to LeetCode by Swift -
HandyJSON
A handy swift json-object serialization/deserialization library -
SwiftyUserDefaults
Modern Swift API for NSUserDefaults -
CoreStore
Unleashing the real power of Core Data with the elegance and safety of Swift -
AlamofireObjectMapper
An Alamofire extension which converts JSON response data into swift objects using ObjectMapper -
Disk
Delightful framework for iOS to easily persist structs, images, and data -
FileKit
Simple and expressive file management in Swift -
SugarRecord
CoreData/Realm sweet wrapper written in Swift -
Zip Foundation
Effortless ZIP Handling in Swift -
Gloss
[Deprecated] A shiny JSON parsing library in Swift :sparkles: Loved by many from 2015-2021 -
FileBrowser
Finder-style iOS file browser written in Swift -
QueryKit
A simple CoreData query language for Swift and Objective-C. -
fluent
Vapor ORM (queries, models, and relations) for NoSQL and SQL databases -
DefaultsKit
Simple, Strongly Typed UserDefaults for iOS, macOS and tvOS -
Freddy
A reusable framework for parsing JSON in Swift. -
AEXML
Swift minion for simple and lightweight XML parsing -
FileProvider
FileManager replacement for Local, iCloud and Remote (WebDAV/FTP/Dropbox/OneDrive) files -- Swift -
Fuzi
A fast & lightweight XML & HTML parser in Swift with XPath & CSS support -
EVReflection
Reflection based (Dictionary, CKRecord, NSManagedObject, Realm, JSON and XML) object mapping with extensions for Alamofire and Moya with RxSwift or ReactiveSwift -
Decodable
[Probably deprecated] Swift 2/3 JSON unmarshalling done (more) right -
Graph
Graph is a semantic database that is used to create data-driven applications. -
AlecrimCoreData
a simple CoreData wrapper library written in Swift. -
Zephyr
Effortlessly synchronize UserDefaults over iCloud. -
Algorithm
Algorithm is a library of tools that is used to create intelligent applications. -
Realm+JSON
A concise Mantle-like way of working with Realm and JSON. -
SQLiteDB
Basic SQLite wrapper for Swift 4.x and lightweight ORM for accessing underlying tables in an SQLite database -
JSONHelper
โ Convert anything into anything in one operation; JSON data into class instances, hex strings into UIColor/NSColor, y/n strings to booleans, arrays and dictionaries of these; anything you can make sense of! -
Himotoki
A type-safe JSON decoding library purely written in Swift -
Genome
A simple, type safe, failure driven mapping library for serializing JSON to models in Swift 3.0 (Supports Linux) -
json-swift
A basic library for working with JSON in Swift. -
XMLCoder
Easy XML parsing using Codable protocols in Swift -
CodableAlamofire
An extension for Alamofire that converts JSON data into Decodable objects. -
CoreXLSX
Excel spreadsheet (XLSX) format parser written in pure Swift -
MongoKitten
Native MongoDB driver for Swift, written in Swift -
SwiftData
simple and Effective SQLite Handling in Swift.
Appwrite - The Open Source Firebase alternative introduces iOS support
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of ObjectBox embedded database or a related project?
README
Swift Database - swiftly persist objects on iOS and macOS
Your opinion matters to us! Please fill in this 2-minute Anonymous Feedback Form.
ObjectBox is a superfast, light-weight Swift database persisting Swift objects fast, easily, and fully ACID-compliant on-device on iOS and macOS. On top, it comes with an out-of-the-box Data Sync handling the complexity of occassionally connected devices, networking and conflict resolution code for you. Build apps that reliably sync between devices and any backend, offline on-premise or online with the Cloud.
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.
Table of Contents
- Features
- Adding ObjectBox to your project
- Example
- Background: code generation
- Source code
- Already using ObjectBox?
- Cross-platform database: Mobile, Desktop, Browser, Embedded, IoT
- License
Features
๐ High performance on restricted devices, like IoT gateways, micro controllers, ECUs etc.\ ๐ช Resourceful with minimal CPU, power and Memory usage for maximum flexibility and sustainability\ ๐ Relations: object links / relationships are built-in\ ๐ป Multiplatform: Linux, Windows, Android, iOS, macOS
๐ฑ Scalable: handling millions of objects resource-efficiently with ease\ ๐ Queries: filter data as needed, even across relations\ ๐ฆฎ Statically typed: compile time checks & optimizations\ ๐ Automatic schema migrations: no update scripts needed
And much more than just data persistence\ ๐ฅ ObjectBox Sync: keeps data in sync between devices and servers\ ๐ ObjectBox TS: time series extension for time based data
Enjoy โค๏ธ
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.5.0 | 5.3(.2) |
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.
Background: code generation
ObjectBox Swift Database 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).
Already using ObjectBox?
We're on a mission to bring joy and delight to Mobile app developers. We want ObjectBox not only to be the fastest Swift database, but also the swiftiest Swift data persistence, making you enjoy coding with ObjectBox.
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:
- Add GitHub issues
- Upvote issues you find important by hitting the ๐/+1 reaction button
- Drop us a line via @ObjectBox_io
- โญ us, if you like what you see
Thank you! ๐
Keep in touch: For general news on ObjectBox, check our blog!
Cross-platform database: Mobile, Desktop, Browser, Embedded, IoT
ObjectBox is a cross-platform database supporting multiple native languages:
- ObjectBox Java/Kotlin Database: runs on Android, desktop, and servers.
- Golang Data Persistence: great for IoT, data-driven tools, and server applications.
- C and C++ Database: native speed with zero copy access to objects on embedded devices also enables porting ObjectBox to other languages.
- Flutter/Dart Database: persist Dart objects & build cross-platform apps using Flutter.
License
All files in this repository are under the Apache 2 license:
Copyright 2018-2021 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 embedded database README section above
are relevant to that project's source code only.