A MongoDB interface for Swift [Not under active development]

Overview

MongoDB

Carthage compatible Join the chat at https://gitter.im/Danappelxx/SwiftMongoDB Travis CI codecov.io Platforms

#This library is no longer under active development. I highly recommend using the robust, pure-swift alternative MongoKitten.

A Swift MongoDB driver. Wraps around the MongoDB C Driver 1.2.0 (supports MongoDB version 2.4 and later).

Supports the 03-24 snapshot with 0.5, and 02-28 with 0.4. Earlier versions should not be used.

Setup

The simplest and linux-compatible way to use SwiftMongoDB is through the official Swift package manager. Simply add it to your Package.swift like so:

import PackageDescription
let package = Package(
  name: "foo",
  dependencies: [
    .Package(url: "https://github.com/Danappelxx/SwiftMongoDB", majorVersion: 0, minor: 5)
  ]
)

As a second step you need to ensure that the mongo-c driver is installed on your system.

OSX (via brew)

brew install mongo-c

If you also need to install MongoDB run the following

brew install mongodb

The rest of the universe

How to install MongoDB C driver.

Tutorial

This example assumes that you have setup the project and have MongoDB running.

Setup

At the top of any file where you use SwiftMongoDB, you need to import it:

import MongoDB

First, you need to establish a connection to the MongoDB server.

let client = try Client(host: "localhost", port: 27017)

You can connect to a MongoDB instance (local or not) this way.

Then you need to create a database.

let testDatabase = Database(client: client, name: "test")

Then you need to create a collection. The collection doesn't have to exist (it will be created automatically if it isn't).

let subjects = Collection(database: testDatabase, name: "subjects")

Insertion and BSON

An important aspect of SwiftMongoDB is how it handles inserting documents. Most of the work will be done through a medium defined in BinaryJSON called BSON.Document. Creating it is very simple and type-safe, and the translation to MongoDB's lower-level type known as BSON is (fortunately) done behind the scenes for you.

For example, say you wanted to create a human named Dan. This is how it would look in JSON:

{
  "name" : "Dan",
  "age" : 15,
  "lovesSwift" : true,
  "location" : {
    "state" : "California"
  },
  "favoriteNumbers" : [1, 2, 3, 4, 5]
}

It looks pretty similar in Swift:

let subject: BSON.Document = [
    "name": "Dan",
    "age": 15,
    "lovesSwift" : true,
    "location": [
        "state": "California"
    ],
    "favoriteNumbers" : [1,2,3,4,5]
]

You can then insert the newly created document(s) into the collection.

try subjects.insert(subject)

If you want to create a BSON.Document from JSON, it's just as simple:

let document = try BSON.fromJSONString(jsonString)

That's it for inserting documents - pretty neat, right?

Querying

Now, lets do some querying!

Here's the most basic query you can possibly perform:

let cursor = try subjects.find()
let testSubjects = try cursor.all()

The first line, as you can see, returns a cursor. The Cursor type gives you more control over how you process the results of the query. For most use cases, the methods Cursor.nextDocument and Cursor.all will be enough. However, Cursor also conforms to GeneratorType and SequenceType, meaning that you can take advantage of a lot of neat Swift features. For example, you can iterate directly over it using a for loop:

let results = try subjects.find()
for subject in results {
    print(subject)
}

Now, say we inserted a few more test subjects and wanted to query for all of them whose age is exactly 15. This is pretty simple:

let result = try subjects.find(query: ["age" : 15])

The query parameter operates just as it would in most other MongoDB implementations. For instance, in the MongoDB shell, this would be the equivalent of db.subjects.find( {"age" : 15} ).

Updating

If you wanted to change all test subjects who loved Swift to Chris Lattner, you could simply do:

let newDocument: BSON.Document = [
    "name": "Chris Lattner" // we can ignore the other keys for this example
]
try subjects.update(query: ["lovesSwift": true], newValue: newDocument)

Removing

Removing documents works the same way - if you want to remove all of the test subjects named Dan, you simply do:

try subjects.remove(query: ["name" : "Dan"])

Those are the basics - it's really a very small simple library. You can take a look at the test suite and/or source which should show you some of the methods not shown here. Otherwise, feel free to jump right into the deep end and start using SwiftMongoDB!

Contributing

Any and all help is very welcome! Feel free to fork and submit a pull request - I will almost certainly merge it.

You should start by taking a look at the current issues and see if there's anything you want to implement/fix there.

License

MIT - more information is in the LICENSE file.

Changelog

0.5

0.5.0

Swift 3 support

0.4

0.4.1

Minor api fixes

0.4.0

A large refactor with a cleaner API and better internal code.

0.3

0.3.0

SPM and Linux support

0.2

0.2.3

Update dependencies, fix a few bugs.

0.2.2

Update dependencies.

0.2.1

Set up proper dependency management through Carthage, among other fixes.

0.2.0

Migrate to MongoDB C Driver 1.2.0 from 0.8, comes with a complete rewrite

0.1

0.1.1

Migrate to Swift 2 error handling model

0.1.0

Add documentation, clean up a lot of code, add examples for schemas using inheritance, protocols, and protocol extensions.

0.0

0.0.9

Add support for very simple mongoose-esque schemas by conforming to protocol MongoObject.

0.0.8

Implement (untested) login, fix major issue with querying where objects would either get ignored or query would loop indefinitely.

0.0.7

Fix BSON encoder and decoder to support boolean values, bugfixes.

0.0.6

Implement BSON -> Swift, bugfixes.

0.0.5

Make SwiftMongoDB multiplatform.

0.0.4 - 0.0.2

Getting Cocoapods to work, bugfixes.

0.0.1

Core operations implemented (insert, find, remove).

Comments
  • List of Collections

    List of Collections

    Hi, I would connect my mongodb directly to my iPhone to explore every collection and add/edit/remove every document. I can't find a method to have a list of databases and collections. I would have a method that have the same role as

    • show databases
    • show collections It's possible? Thanks in advance Matteo
    opened by matfur92 18
  • Added a convenience init and fix bugs

    Added a convenience init and fix bugs

    Added a convenience init to have a different authentication database and maintaining test and old calls to init. Fix missing Foundation import. Added bridging header (FOR WORKAROUND VERSION).

    opened by matfur92 11
  • [Linux] Simple find query fails

    [Linux] Simple find query fails

    Looking through your sample code, accessing the server to pull back a list of databases works fine. Attempting to run a query results in a core dump:

    The given document is corrupt.
    fatal error: Error raised at top level: : file /home/buildslave/jenkins/workspace/oss-swift-linux-packages-ubuntu_15_10/swift/stdlib/public/core/ErrorType.swift, line 59
    [1]    2035 illegal hardware instruction (core dumped)  .build/debug/SwiftMongoDB
    

    Code used resulting in this error was:

    import CMongoC
    
    let client = try MongoClient(host: "my-host-name-here", port: 27017)
    let db = MongoDatabase(client: client, name: "databaseName" )
    let systemsCollection = MongoCollection(name: "systems", database: db)
    let result = try systemsCollection.find()
    

    Running the above close without the find() call works fine.

    I momentarily enabled profiling Mongo to confirm that a query was actually running. I can see that the query did run and return the correct number of documents back.

    bug 
    opened by justmark 10
  • find() function returning weird results

    find() function returning weird results

    Hello!

    Love the library, good job! When using the find() function on my mongo db, it either returns an incorrect amount of items, or it returns duplicate of one item and overwrites another item, still returning an incorrect number of items. Ive attached screenshots to sort out confusion.

    screen shot 2015-12-30 at 10 44 16 am screen shot 2015-12-30 at 10 44 50 am

    For instance when querying my DB i should see whats in the first picture, but instead i get back whats in the second. Very peculiar. Thoughts?

    Thanks!

    opened by AAFFTechnologies 7
  • .find() only return 1 record

    .find() only return 1 record

    Good package, however, when I use below code, it only return one record. My collection have at least 100 records. And also have invalid type on the MongoDB "created_at" field? Anything i missed? Thanks.

    let results = try subjects.find() for result in results { let skData = result.data print(skData["_id"]) }


    found oid: 5663e13cab9f9e8e05385f42 found string: 2366 0959 with key: PhoneNo found string: [email protected] with key: Email found string: http://www.uniserve.com.hk with key: Website invalid type <--- this should be "created_at"

    opened by tennisplayer88 7
  • Linux Support

    Linux Support

    I'm working on it - I'm having some issues with dependent modulemaps, but I'll figure it out. Obviously this goes along with #9.

    I'm thinking of adding SwiftFoundation as a dependency to handle JSON for me, otherwise I'm relying on Foundation, which hasn't been implemented yet. It shouldn't be an issue since SwiftFoundation supports both SPM and Carthage.

    opened by Danappelxx 7
  • [Bug] SwiftMongoDB doesn't connect on iOS device

    [Bug] SwiftMongoDB doesn't connect on iOS device

    Ok, i got a couple question. Im still a beginner in mobile development. When i run my simulator in Xcode it pushes my data to my database fine with SwiftMongoDB but when i run it in my actual iPhone 6 it gives me an error that it can't connect. Is there something i have to do before i run it on my iPhone? And is anyone else getting multiple data saved to there Database? I even used the example project that was created by the SwiftMongoDB owner and it still copies whatever data i push to my database again when i run the simulator. I created a long function to kinda fix it, just wondering if it should be copying the data again every time i run my simulator...

    bug 
    opened by ghost 6
  • Error parsing document that contains _id without $oid

    Error parsing document that contains _id without $oid

    let coll = MongoCollection.init(collectionName: collection, client: mongoClient!)
    do{
        documents = try coll.find()
    }catch ...
    

    In this piece of code I have run-time exception : Invalid input string MetaDataController, looking for 2 Error in :

    private func initBSON() {
        try! MongoBSONEncoder(data: self.data).copyTo(self.BSONRAW)
    }
    

    parsing { "_id" : "MetaDataController", "metaDataEnabled" : true } that is a document of objectlabs-systemcollection. This collection is one of default collections of MongoLab database.

    Same error with objectlabs-system.admin.collectionscollection, for example with { "_id" : "prova", "viewMode" : "list" }.

    I think that the problem is _id key. It could contains everything and not only [ "$oid" : "...." ]

    opened by matfur92 6
  • [Carthage] xcodebuild timed out

    [Carthage] xcodebuild timed out

    This might be a Carthage issue, but I get this:

    *** Checking out SwiftMongoDB at "0.4.0" *** xcodebuild output can be found in /var/folders/25/4d9xp1cs27v5gpzb0yj6q42c0000gn/T/carthage-xcodebuild.xtAhgK.log xcodebuild timed out while trying to read SwiftMongoDB.xcodeproj 😭

    Cheers

    opened by menteb 5
  • README instructions don't work

    README instructions don't work

    The following code is not valid Swift and doesn't work:

    let data = [
        "name": "Dan",
        "age": 15,
        "lovesProgramming" : true,
        "location": [
            "state": "California"
        ]
        "favoriteNumbers" : [1,2,3,4,5]
    ]
    
    let subject = MongoDocument(data)
    
    opened by svanimpe 5
  • add support for 'fields' parameter in 'find' method

    add support for 'fields' parameter in 'find' method

    Added support for specifying which fields should be returned in find results. I wanted this because I only want to get a few small fields from a number of large documents.

    opened by denisbohm 4
  • Xcode 8 beta , Swift 3.0

    Xcode 8 beta , Swift 3.0

    /Users/datthanhvu/Desktop/hachi/hachi/Packages/CMongoC.git/Package.swift:8:5: error: argument 'pkgConfig' must precede argument 'dependencies' pkgConfig: "libmongoc-1.0" ^ Can't parse Package.swift manifest file because it contains invalid format. Fix Package.swift file format and try again. error: The package at `/Users/datthanhvu/Desktop/hachi/hachi/Packages/CMongoC.git' has no Package.swift for the specific version: 0.1.1

    opened by stephenvxx 0
  • Cannot build Package with Swift toolchain 2016-7-25(a)

    Cannot build Package with Swift toolchain 2016-7-25(a)

    /Users/sloan/personal/web-portfolio/Packages/CMongoC.git/Package.swift:8:5: error: argument 'pkgConfig' must precede argument 'dependencies'
        pkgConfig: "libmongoc-1.0"
        ^
    Can't parse Package.swift manifest file because it contains invalid format. Fix Package.swift file format and try again.
    error: The package at `/Users/sloan/personal/web-portfolio/Packages/CMongoC.git' has no Package.swift for the specific version: 0.1.1 
    

    Trying to build package and am unable to understand this issue, assuming it is swift package manager related. Using 2016-7-25(a) to support Kitura web framework. Building on OSX 10.11.16 with swift build --> targeting my package, of which SwiftMongoDB is a dependancy.

    opened by sloan-dog 2
  • Can I use SwiftMongoDB for iOS projects?

    Can I use SwiftMongoDB for iOS projects?

    I pod-installed SwiftMongoDB, but it doesn't seem to be installed, as the build never succeeds. Below is the pod file.

    target 'DailyExercise' do source ‘https://github.com/CocoaPods/Specs.git' platform :ios, ‘9.0’ use_frameworks!

    pod 'SwiftMongoDB' pod 'OAuthSwift', '~> 0.5.0'

    target 'DailyExerciseTests' do inherit! :search_paths end

    target 'DailyExerciseUITests' do inherit! :search_paths end

    end

    The only susceptible thing I want to inform is the result I got after typing 'pod install' command. warning: failed to load toolchain 'swift': Could not find toolchain: swiftIntegrating client project

    opened by chanhyeoni 7
  • carthage bootstrap error

    carthage bootstrap error

    Whenever I try to carthage bootstrap I'm getting this error

    Haiks-iMac:Vikas haikampardjian$ carthage bootstrap
    *** Checking out libbson-xcode at "1.2.1"
    *** Checking out libmongoc-xcode at "1.2.1"
    *** Checking out SwiftMongoDB at "6efbc72f70077d72718825ab9e398b0df40d0339"
    *** xcodebuild output can be found in /var/folders/fd/scm2c4fx78158r9pd0mwvkyc0000gn/T/carthage-xcodebuild.3jlNh8.log
    *** Building scheme "bson-ios" in bson.xcodeproj
    *** Building scheme "bson-osx" in bson.xcodeproj
    *** Building scheme "mongoc-osx" in mongoc.xcodeproj
    ** BUILD FAILED **
    
    
    The following build commands failed:
        CompileC /Users/haikampardjian/Library/Developer/Xcode/DerivedData/mongoc-dearahlckdxevjgqggbgfwxqfcik/Build/Intermediates/mongoc.build/Release/mongoc-osx.build/Objects-normal/x86_64/mongoc-stream-buffered.o mongoc/mongoc-stream-buffered.c normal x86_64 c com.apple.compilers.llvm.clang.1_0.compiler
    (1 failure)
    /Users/haikampardjian/Projects/Vikas/Carthage/Checkouts/libbson-xcode/bson/bson/bson-oid.c:36:23: warning: unused variable 'gHexCharPairs' [-Wunused-const-variable]
    /Users/haikampardjian/Projects/Vikas/Carthage/Checkouts/libbson-xcode/bson/bson/bson-timegm.c:62:23: warning: shifting a negative signed value is undefined [-Wshift-negative-value]
    /Users/haikampardjian/Projects/Vikas/Carthage/Checkouts/libbson-xcode/bson/bson/bson-timegm.c:66:38: warning: shifting a negative signed value is undefined [-Wshift-negative-value]
    /Users/haikampardjian/Projects/Vikas/Carthage/Checkouts/libbson-xcode/bson/bson/bson-timegm.c:180:19: warning: variable 'gmt' is not needed and will not be emitted [-Wunneeded-internal-declaration]
    /Users/haikampardjian/Projects/Vikas/Carthage/Checkouts/libbson-xcode/bson/bson/bson-oid.c:36:23: warning: unused variable 'gHexCharPairs' [-Wunused-const-variable]
    /Users/haikampardjian/Projects/Vikas/Carthage/Checkouts/libbson-xcode/bson/bson/bson-timegm.c:62:23: warning: shifting a negative signed value is undefined [-Wshift-negative-value]
    /Users/haikampardjian/Projects/Vikas/Carthage/Checkouts/libbson-xcode/bson/bson/bson-timegm.c:66:38: warning: shifting a negative signed value is undefined [-Wshift-negative-value]
    /Users/haikampardjian/Projects/Vikas/Carthage/Checkouts/libbson-xcode/bson/bson/bson-timegm.c:180:19: warning: variable 'gmt' is not needed and will not be emitted [-Wunneeded-internal-declaration]
    /Users/haikampardjian/Projects/Vikas/Carthage/Checkouts/libbson-xcode/bson/bson/bson-timegm.c:62:23: warning: shifting a negative signed value is undefined [-Wshift-negative-value]
    /Users/haikampardjian/Projects/Vikas/Carthage/Checkouts/libbson-xcode/bson/bson/bson-timegm.c:66:38: warning: shifting a negative signed value is undefined [-Wshift-negative-value]
    /Users/haikampardjian/Projects/Vikas/Carthage/Checkouts/libbson-xcode/bson/bson/bson-timegm.c:180:19: warning: variable 'gmt' is not needed and will not be emitted [-Wunneeded-internal-declaration]
    /Users/haikampardjian/Projects/Vikas/Carthage/Checkouts/libbson-xcode/bson/bson/bson-timegm.c:62:23: warning: shifting a negative signed value is undefined [-Wshift-negative-value]
    /Users/haikampardjian/Projects/Vikas/Carthage/Checkouts/libbson-xcode/bson/bson/bson-timegm.c:66:38: warning: shifting a negative signed value is undefined [-Wshift-negative-value]
    /Users/haikampardjian/Projects/Vikas/Carthage/Checkouts/libbson-xcode/bson/bson/bson-timegm.c:180:19: warning: variable 'gmt' is not needed and will not be emitted [-Wunneeded-internal-declaration]
    /Users/haikampardjian/Projects/Vikas/Carthage/Checkouts/libbson-xcode/bson/bson/bson-timegm.c:62:23: warning: shifting a negative signed value is undefined [-Wshift-negative-value]
    /Users/haikampardjian/Projects/Vikas/Carthage/Checkouts/libbson-xcode/bson/bson/bson-timegm.c:66:38: warning: shifting a negative signed value is undefined [-Wshift-negative-value]
    /Users/haikampardjian/Projects/Vikas/Carthage/Checkouts/libbson-xcode/bson/bson/bson-timegm.c:180:19: warning: variable 'gmt' is not needed and will not be emitted [-Wunneeded-internal-declaration]
    warning: using 'ALWAYS_SEARCH_USER_PATHS = YES' while building targets which define modules ('DEFINES_MODULE = YES') may fail. Please migrate to using 'ALWAYS_SEARCH_USER_PATHS = NO'.
    warning: using 'ALWAYS_SEARCH_USER_PATHS = YES' while building targets which define modules ('DEFINES_MODULE = YES') may fail. Please migrate to using 'ALWAYS_SEARCH_USER_PATHS = NO'.
    warning: no rule to process file '/Users/haikampardjian/Projects/Vikas/Carthage/Checkouts/libmongoc-xcode/mongoc/mongoc-counters.defs' of type text for architecture x86_64
    warning: using 'ALWAYS_SEARCH_USER_PATHS = YES' while building targets which define modules ('DEFINES_MODULE = YES') may fail. Please migrate to using 'ALWAYS_SEARCH_USER_PATHS = NO'.
    warning: no rule to process file '/Users/haikampardjian/Projects/Vikas/Carthage/Checkouts/libmongoc-xcode/mongoc/mongoc-counters.defs' of type text for architecture x86_64
    /Users/haikampardjian/Projects/Vikas/Carthage/Checkouts/libmongoc-xcode/Carthage/Build/Mac/bson.framework/Headers/bson-compat.h:115:11: error: include of non-modular header inside framework module 'bson.bson_compat' [-Werror,-Wnon-modular-include-in-framework-module]
    <module-includes>:1:1: warning: umbrella header for module 'bson' does not include header 'b64_ntop.h' [-Wincomplete-umbrella]
    <module-includes>:1:1: warning: umbrella header for module 'bson' does not include header 'b64_pton.h' [-Wincomplete-umbrella]
    <module-includes>:1:1: warning: umbrella header for module 'bson' does not include header 'bson-osx.h' [-Wincomplete-umbrella]
    <module-includes>:1:1: warning: umbrella header for module 'bson' does not include header 'bson-stdint-win32.h' [-Wincomplete-umbrella]
    /Users/haikampardjian/Projects/Vikas/Carthage/Checkouts/libmongoc-xcode/mongoc/mongoc-buffer-private.h:24:10: fatal error: could not build module 'bson'
    A shell task (/usr/bin/xcrun xcodebuild -project /Users/haikampardjian/Projects/Vikas/Carthage/Checkouts/libmongoc-xcode/mongoc.xcodeproj -scheme mongoc-osx -configuration Release ONLY_ACTIVE_ARCH=NO CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY= CARTHAGE=YES clean build) failed with exit code 65:
    ** BUILD FAILED **
    
    
    The following build commands failed:
        CompileC /Users/haikampardjian/Library/Developer/Xcode/DerivedData/mongoc-dearahlckdxevjgqggbgfwxqfcik/Build/Intermediates/mongoc.build/Release/mongoc-osx.build/Objects-normal/x86_64/mongoc-stream-buffered.o mongoc/mongoc-stream-buffered.c normal x86_64 c com.apple.compilers.llvm.clang.1_0.compiler
    (1 failure)
    

    I've tried on different environments, getting same error everywhere.

    My Xcode version: 7.3.1 My Carthage version: 0.16.2

    opened by ludoded 1
  • How to detect that an operation is not succeeded?

    How to detect that an operation is not succeeded?

    Hi,

    I have both MongoDB and MongoCollection instances instantiated and initialized when the phone had internet connection. Later, when internet connection is gone I try to update a collection via

    colleciton.update(...)

    How do I check if that update operation is successful? As I can see the update method returns MongoResult, which has isSuccessful, but MongoResult.isSuccessful is always true for me if nothing is updated in the database and the phone didn't even have internet connection

    opened by VitalyStakhov 0
Owner
Dan Appel
CS at UC Irvine
Dan Appel
A stand-alone Swift wrapper around the mongo-c client library, enabling access to MongoDB servers.

This package is deprecated in favour of the official Mongo Swift Driver. We advise users to switch to that pack

PerfectlySoft Inc. 54 Jul 9, 2022
The official MongoDB driver for Swift

MongoSwift The official MongoDB driver for Swift applications on macOS and Linux. Index Documentation Bugs/Feature Requests Installation Step 1: Insta

mongodb 317 Jan 8, 2023
This Project domonstrate the latest Swift on Server to create RESTFul API's connected via Database: MongoDB NoSql

Swift is a general-purpose programming language built using a modern approach to safety & performance that make it specifically suitable for Server applications. Vapor is a web framework for Swift, allowing you to write backends, web apps APIs and HTTP servers in Swift

Furqan 3 Aug 23, 2022
A PostgreSQL client library for Swift. Does not require libpq.

PostgresClientKit PostgresClientKit provides a friendly Swift API for operating against a PostgreSQL database. Features Doesn't require libpq. Postgre

codewins.com 107 Dec 1, 2022
Why not use UserDefaults to store Codable objects 😉

tl;dr You love Swift's Codable protocol and use it everywhere, who doesn't! Here is an easy and very light way to store and retrieve -reasonable amoun

Omar Albeik 452 Oct 17, 2022
A stand-alone Swift wrapper around the FileMaker XML Web publishing interface, enabling access to FileMaker servers.

Perfect - FileMaker Server Connector This project provides access to FileMaker Server databases using the XML Web publishing interface. This package b

PerfectlySoft Inc. 33 Jul 13, 2022
A practical interface to the Steamworks SDK using the Swift C++ importer

steamworks-swift A practical interface to the Steamworks SDK using the Swift C++ importer. Caveat Integrator: The Swift C++ importer is a chaotic scie

Carlos Valencia 4 Oct 17, 2022
Modern interface to UserDefaults + Codable support

Default Modern interface to UserDefaults + Codable support What is Default? Default is a library that extends what UserDefaults can do by providing ex

Nicholas Maccharoli 475 Dec 20, 2022
A toolkit for SQLite databases, with a focus on application development

A toolkit for SQLite databases, with a focus on application development

Gwendal Roué 5.6k Jan 8, 2023
GraphQLite is a toolkit to work with GraphQL servers easily. It also provides several other features to make life easier during iOS application development.

What is this? GraphQLite is a toolkit to work with GraphQL servers easily. It also provides several other features to make life easier during iOS appl

Related Code 2.8k Jan 9, 2023
A demo app to showcase pixel perfect, modern iOS development with SwiftUI and Combine on MVVM-C architecture.

Pixel_Perfect_SwiftUI A demo app to showcase pixel perfect, modern iOS development with SwiftUI and Combine on MVVM-C architecture. Tech Stack: Swift,

Burhan Aras 0 Jan 9, 2022
SQLite.swift - A type-safe, Swift-language layer over SQLite3.

SQLite.swift provides compile-time confidence in SQL statement syntax and intent.

Stephen Celis 8.7k Jan 3, 2023
🧡 SQLiteOrm-Swift is an ORM library for SQLite3 built with Swift 5

?? Easy to use SQLite ORM library written with Swift

Yevgeniy Zakharov 25 Oct 6, 2022
ObjectBox Swift - persisting your Swift objects superfast and simple

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

ObjectBox 380 Dec 19, 2022
Shows the issue with swift using an ObjC class which has a property from a swift package.

SwiftObjCSwiftTest Shows the issue with swift using an ObjC class which has a property from a swift package. The Swift class (created as @objc derived

Scott Little 0 Nov 8, 2021
Ios-App-ication-Swift - A simple iOS application made in Xcode using Swift

?? iPhone Calculator A simple iOS application made in Xcode using Swift. This ap

Kushal Shingote 1 Feb 2, 2022
Save-the-dot-project-swift - Save the dot project with swift

Save the Dot Apple introduced UIViewPropertyAnimator for iOS 10. We can use this

Kushal Shingote 2 Feb 8, 2022
The Swift Package Index is the place to find Swift packages!

The Swift Package Index helps you make better decisions about the dependencies you use in your apps. The Swift Package Index is a search engine for pa

Swift Package Index 389 Dec 22, 2022
Elegant library to manage the interactions between view and model in Swift

An assistant to manage the interactions between view and model ModelAssistant is a mediator between the view and model. This framework is tailored to

Seyed Samad Gholamzadeh 28 Jan 29, 2022