T1T4N / NSResult

Objective-C compatible wrapper of Swift's Result type

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

NSResult Swift Platforms

Objective-C compatible wrapper of Swift's Result type

Latest release: 27.10.2020 • version 1.0.0

Requirements: iOS 9.0+ • macOS 10.10+ • tvOS 9.0+ • watchOS 2.0+ • Swift 5.1+ / Xcode 11.3+

Swift version Project version
Swift 5.1 v1.0.0

Table of Contents

Usage

Tested with carthage version: 0.36

Add this to Cartfile

git "https://github.com/T1T4N/NSResult.git" ~> 1.0

Tested with swift build --version: Swift Package Manager - Swift 5.3.0

// swift-tools-version:5.1
dependencies: [
    .package(url: "https://github.com/T1T4N/NSResult.git", from: "1.0.0")
]

Tested with pod --version: 1.10.0

platform :osx, '10.10'
use_frameworks!

target 'MyApp' do
  pod 'NSResultKit', :git => "https://github.com/T1T4N/NSResult.git", :tag => "1.0.0"
end

Example

Check the example playground or the example app in the project.

Structure

This is a Swift library meant to be used in mixed-language projects where the codebase still has a considerable amount of Objective-C.

NSResult

This is a simple @objc class that inherits from NSObject and has one single property base: Result<Any, Error>. This property is only accessible on the Swift side, but NSResult can initialized from Objective-C using the following methods:

  • [NSResult success:]
  • [NSResult failure:]

StaticMap

Used on the Swift side to restore type safety to the underlying Result object.

Block

Used on the Objective-C side to cleanly separate the logic for handling a success value from the one for handling a failure.

  • [result performSuccess:^(id _Nonnull value) orFailure:^(NSError * _Nonnull error)]
  • [result performBlock:^(id _Nullable successValue, NSError * _Nullable failureError)]

About

Objective-C compatible wrapper of Swift's Result type

License:MIT License


Languages

Language:Swift 55.3%Language:Ruby 32.1%Language:Objective-C 12.6%