Swiftpack.co -  Qase/Base-ios as Swift Package
Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
Qase/Base-ios
Set of useful pieces of code that can be re-used in any project written in Swift.
.package(url: "https://github.com/Qase/Base-ios.git", from: "v0.0.1")

Platform Swift 5 travis badge codebeat badge Carthage compatible Pod compatible License: MIT Maintainer: troupmar Qase: base-ios

QuantiBase

Base-ios repository consists of useful extensions, general classes and protocols that we gather and use while working on our projects. The main goal is to create a central point of such snippets that can be reused across various projects. We constantly review and enrich the repository aiming to reach maximum reusability. We take full advantage of functional programming with reactive layer. For that purpose we use external libraries and thus QuantiBase will require following:

Features

  • Services:
    • AppLifecycleService: providing app lifecycle callbacks (such as “didFinishLaunchingNotification”) via reactive observables instead of using global notifications
    • KeyboardService: providing keyboard callbacks (such as “keyboardWillShow”) via reactive observables instead of using global notifications
    • ReachabilityService: providing reachability status (such as “ReachableViaWiFi”) via reactive observables
    • BluetoothService: wrapper around CoreBluetooth’s CBPeripheralManager providing its callbacks via reactive observables
  • JSONParser: our own implementation of JSON parsing & serialization
  • HTTPNetworking: our own reactive implementation of REST network communication that fully supports our JSONParser
  • UserDefaultsStorable protocol: used to group models that support UserDefaults storing
  • ViewModelBindable protocol: used by classes and structs that bind viewModels (useful for MVVM architecture)
  • BinaryCodable protocol: used to group models that support Binary encoding & decoding
  • Queue: implementation of queue using array
  • TableModel class: used when creating table views aiming to encapsulate the data structure of the table (will be soon obsolete since it is mostly replaced by RxDataSources external library)
  • MultipleDelegating protocol: extending the highly used Delegate pattern that supports multiple delegates (will be soon obsolete since it is mostly replaces by reactive observables)
  • 3rd party:
    • LoremSwiftum: helpful class providing random strings of variable length
    • Overture operators: operators on top of existing functions introduced in Overture library
      • |> for with
      • ^ for get and prop
      • <> for concat
      • >>> and <<< for pipe
      • >=> for chain
  • Useful subclasses of UIViewController & UIView
  • Binary extensions for basic data types
  • Other useful extensions for basic data types, reactive types and UIKit classes
  • Other

Installation

Carthage

Carthage is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks. You can install Carthage with Homebrew using the following command:

$ brew update
$ brew install carthage

To integrate QuantiLogger into your Xcode project using Carthage, specify it in your Cartfile:

github "Qase/base-ios" ~> 0.0.2

Run carthage update to build the framework and drag the built QuantiBase.framework and its dependencies into your Xcode project.

CocoaPods

CocoaPods is a dependency manager for Cocoa projects. You can install it with the following command:

$ gem install cocoapods

To integrate QuantiLogger into your Xcode project using CocoaPods, specify it in your Podfile:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.0'
use_frameworks!

target '<Your Target Name>' do
  pod 'QuantiBase', '~> 0.0.2'
end

or for macOS

source 'https://github.com/CocoaPods/Specs.git'
platform :osx, '10.13'
use_frameworks!

target '<Your Target Name>' do
  pod 'QuantiBase', '~> 0.0.2'
end

Then, run the following command:

$ pod install

Swift Package Manager

The Swift Package Manager is a tool for managing the distribution of Swift code. The Package Manager is included in Swift 3.0 and above.

It doesn't support iOS, macOS, tvOS or watchOS projects. It only compiles for host platforms (macOS/linux). It is useful for commanline apps. To create a commandline app using SPM please read this great RayWenderlich article. In file Package.swift in the dependencies parameter add the following:

.package(url: "https://github.com/Qase/Base-ios", from: "0.0.2)

so it should look something like this:

let package = Package(
    name: "YOUR_APP_NAME",
    dependencies: [
        .package(url: "https://github.com/Qase/Base-ios", from: "0.0.2"),
    ]
)

then run $ swift build and $ swift package generate-xcodeproj

For updating use $ swift package update

Future development

Code base is still under active development and it is going to grow steadily. You can send requests for other usefull snippets, that can be integrated into library.

License

MIT

GitHub

link
Stars: 3
Last commit: 3 days ago

Ad: Job Offers

iOS Software Engineer @ Perry Street Software
Perry Street Software is Jack’d and SCRUFF. We are two of the world’s largest gay, bi, trans and queer social dating apps on iOS and Android. Our brands reach more than 20 million members worldwide so members can connect, meet and express themselves on a platform that prioritizes privacy and security. We invest heavily into SwiftUI and using Swift Packages to modularize the codebase.

Release Notes

First release
2 years ago

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API