ExSwift alternatives and similar libraries
Based on the "Utility" category.
Alternatively, view ExSwift alternatives based on common mentions on social networks and blogs.
-
SwifterSwift
A handy collection of more than 500 native Swift extensions to boost your productivity. -
SwiftGen
The Swift code generator for your assets, storyboards, Localizable.strings, … — Get rid of all String-based APIs! -
R.swift
Strong typed, autocompleted resources like images, fonts and segues in Swift projects -
SwiftGen-Storyboard
The Swift code generator for your assets, storyboards, Localizable.strings, … — Get rid of all String-based APIs! -
swift-protobuf
Plugin and runtime library for using protobuf with Swift -
Dollar
A functional tool-belt for Swift Language similar to Lo-Dash or Underscore.js in Javascript -
EZSwiftExtensions
:smirk: How Swift standard types and classes were supposed to work. -
DifferenceKit
💻 A fast and flexible O(n) difference algorithm framework for Swift collection. -
Result
Swift type modelling the success/failure of arbitrary operations. -
DeepDiff
🦀Amazingly incredible extraordinary lightning fast diffing in Swift -
Device
Light weight tool for detecting the current device and screen size written in swift. -
SwiftLinkPreview
It makes a preview from an URL, grabbing all the information such as title, relevant texts and images. -
WhatsNew
Showcase new features after an app update similar to Pages, Numbers and Keynote. -
Codextended
Extensions giving Swift's Codable API type inference super powers 🦸♂️🦹♀️ -
Playbook
📘A library for isolated developing UI components and automatically taking snapshots of them. -
SwiftyJSONAccelerator
macOS app to generate Swift 5 code for models from JSON (with Codeable) -
ReadabilityKit
Preview extractor for news, articles and full-texts in Swift -
Compass
:earth_africa: Compass helps you setup a central navigation system for your application -
ObjectiveKit
Swift-friendly API for a set of powerful Objective C runtime functions. -
Bow
🏹 Bow is a cross-platform library for Typed Functional Programming in Swift -
Pythonic.swift
Pythonic tool-belt for Swift – a Swift implementation of selected parts of Python standard library. -
BetterSafariView
A better way to present a SFSafariViewController or start a ASWebAuthenticationSession in SwiftUI. -
SwiftPlantUML
A command-line tool and Swift Package for generating class diagrams powered by PlantUML
WorkOS - The modern identity platform for B2B SaaS
* 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 ExSwift or a related project?
README
ExSwift
Set of Swift extensions for standard types and classes.
Installation
Because of Xcode errors it's not possible to integrate this project with Cocoapods or as Embedded Framework. Read more at Dev Forum
Use submodule and copy source code
- Add ExSwift as a submodule
- Open the
ExSwift
project folder, and dragExSwift
sub folder with source code into the file navigator of your Xcode project. Make sure you select add to target - Use it
components.takeFirst() { $0.completed }
Contents
Extensions
Array
Examples in the Wiki
Instance Methods
Name | Signature |
---|---|
first |
first () -> Element? |
last |
last () -> Element? |
get |
get (index: Int) -> Element? |
remove |
remove <U: Equatable> (element: U) |
at |
at (indexes: Int...) -> Array |
take |
take (n: Int) -> Array |
takeWhile |
takeWhile (condition: (Element) -> Bool) -> Array |
takeFirst |
takeFirst (condition: (Element) -> Bool) -> Element? |
tail |
tail (n: Int) -> Array |
skip |
skip (n: Int) -> Array |
skipWhile |
skipWhile (condition: (Element) -> Bool) -> Array |
contains |
contains <T: Equatable> (item: T...) -> Bool |
difference |
difference <T: Equatable> (values: [T]...) -> [T] |
intersection |
intersection <U: Equatable> (values: [U]...) -> Array |
union |
union <U: Equatable> (values: [U]...) -> Array |
unique |
unique <T: Equatable> () -> [T] |
indexOf |
indexOf <T: Equatable> (item: T) -> Int? |
indexOf |
indexOf (condition: Element -> Bool) -> Int? |
lastIndexOf |
lastIndexOf <T: Equatable> (item: T) -> Int? |
zip |
zip (arrays: Array<Any>...) -> [[Any?]] |
partition |
partition (var n: Int, var step: Int? = nil) -> [Array] partition (var n: Int, var step: Int? = nil, pad: Element[]?) -> [Array] |
partitionAll |
partitionAll (var n: Int, var step: Int? = nil) -> [Array] |
partitionBy |
partitionBy <T: Equatable> (cond: (Element) -> T) -> [Array] |
shuffle |
shuffle () |
shuffled |
shuffled () -> Array |
sample (random) |
sample (size n: Int = 1) -> [T] |
max |
max <T: Comparable> () -> T |
min |
min <T: Comparable> () -> T |
each |
each (call: (Element) -> ()) each (call: (Int, Element) -> ()) |
eachRight |
eachRight (call: (Element) -> ()) eachRight (call: (Int, Element) -> ()) |
any |
any (call: (Element) -> Bool) -> Bool |
all |
all (call: (Element) -> Bool) -> Bool |
reject |
reject (exclude: (Element -> Bool)) -> Array |
pop |
pop() -> Element |
push |
push(newElement: Element) |
shift |
shift() -> Element |
unshift |
unshift(newElement: Element) |
insert |
insert (newArray: Array, atIndex: Int) |
groupBy |
groupBy <U> (groupingFunction group: (Element) -> (U)) -> [U: Array] |
countBy |
countBy <U> (groupingFunction group: (Element) -> (U)) -> [U: Int] |
countWhere |
countWhere (test: (Element) -> Bool) -> Int |
reduce |
reduce (combine: (Element, Element) -> Element) -> Element? |
reduceRight |
reduceRight <U>(initial: U, combine: (U, Element) -> U) -> U |
mapFilter |
mapFilter <V> (mapFunction map: (Element) -> (V)?) -> [V] |
implode |
implode <C: ExtensibleCollection> (separator: C) -> C? |
flatten |
flatten <OutType> () -> [OutType] |
flattenAny |
flattenAny () -> [AnyObject] |
toDictionary |
toDictionary <U> (keySelector:(Element) -> U) -> [U: Element] |
toDictionary |
toDictionary <K, V> (transform: (Element) -> (key: K, value: V)?) -> [K: V] |
cycle |
cycle (n: Int? = nil, block: (T) -> ()) |
bSearch |
bSearch (block: (T) -> (Bool)) -> T? |
bSearch |
bSearch (block: (T) -> (Int)) -> T? |
sortUsing |
sortUsing<U:Comparable>(block: ((T) -> U)) -> [T] |
transposition |
transposition (array: [[T]]) -> [[T]] |
permutation |
permutation (length: Int) -> [[T]] |
repeatedPermutation |
repeatedPermutation(length: Int) -> [[T]] |
combination |
combination (length: Int) -> [[Element]] |
repeatedCombination |
repeatedCombination (length: Int) -> [[Element]] |
Class Methods
Name | Signatures |
---|---|
range |
range <U: ForwardIndex> (range: Range<U>) -> Array<U> |
Operators
Name | Signature | Function |
---|---|---|
- |
- <T: Equatable> (first: Array<T>, second: Array<T>) -> Array<T> |
Difference |
- |
- <T: Equatable> (first: Array<T>, second: T) -> Array<T> |
Element removal |
& |
& <T: Equatable> (first: Array<T>, second: Array<T>) -> Array<T> |
Intersection |
| | | (first: Array, second: Array) -> Array | Union |
* Int |
* <ItemType> (array: ItemType[], n: Int) -> [ItemType] |
Returns a new array built by concatenating int copies of self |
* String |
* (array: String[], separator: String) -> String |
Equivalent to array.implode(String) |
[rangeAsArray: x..y] [rangeAsArray: x...y] |
subscript(#rangeAsArray: Range<Int>) -> Array |
Returns the sub-array from index x to index y |
[x, y, ...] |
subscript(first: Int, second: Int, rest: Int...) -> Array |
Returns the items at x, y |
Int
Examples in the Wiki
Properties
Name |
---|
NSTimeInterval years |
NSTimeInterval year |
NSTimeInterval days |
NSTimeInterval day |
NSTimeInterval hours |
NSTimeInterval hour |
NSTimeInterval minutes |
NSTimeInterval minute |
NSTimeInterval seconds |
NSTimeInterval second |
Instance Methods
Name | Signatures |
---|---|
times |
times <T> (call: (Int) -> T) times <T> (call: () -> T) times (call: () -> ()) |
isEven |
isEven () -> Bool |
isOdd |
idOdd () -> Bool |
upTo |
upTo (limit: Int, call: (Int) -> ()) |
downTo |
downTo (limit: Int, call: (Int) -> ()) |
clamp |
clamp (range: Range<Int>) -> Int clamp (min: Int, max: Int) -> Int |
isIn |
isIn (range: Range<Int>, strict: Bool = false) -> Bool |
digits |
digits () -> Array<Int> |
abs |
abs () -> Int |
gcd |
gcd (n: Int) -> Int |
lcm |
lcm (n: Int) -> Int |
Class Methods
Name | Signatures |
---|---|
random |
random(min: Int = 0, max: Int) -> Int |
Float
Examples in the Wiki
Instance Methods
Name | Signature |
---|---|
abs |
abs () -> Float |
sqrt |
sqrt () -> Float |
round |
round () -> Float |
ceil |
ceil () -> Float |
floor |
floor () -> Float |
clamp |
clamp (min: Float, _ max: Float) -> Float |
Class Methods
Name | Signatures |
---|---|
random |
random(min: Float = 0, max: Float) -> Float |
String
Examples in the Wiki
Properties
Name |
---|
length |
capitalized |
Instance Methods
Name | Signature |
---|---|
explode |
explode (separator: Character) -> [String] |
at |
at (indexes: Int...) -> [String] |
matches |
matches (pattern: String, ignoreCase: Bool = false) -> [NSTextCheckingResult]? |
insert |
insert (index: Int, _ string: String) -> String |
ltrimmed |
ltrimmed () -> String |
ltrimmed |
ltrimmed (set: NSCharacterSet) -> String |
rtrimmed |
rtrimmed () -> String |
rtrimmed |
rtrimmed (set: NSCharacterSet) -> String |
trimmed |
trimmed () -> String |
rtrimmed |
rtrimmed (set: NSCharacterSet) -> String |
toDouble |
toDouble() -> Double? |
toFloat |
toFloat() -> Float? |
toUInt |
toUInt() -> UInt? |
toBool |
toBool() -> Bool? |
toDate |
toDate(format : String? = "yyyy-MM-dd") -> NSDate? |
toDateTime |
toDateTime(format : String? = "yyyy-MM-dd hh-mm-ss") -> NSDate? |
Class Methods
Name | Signature |
---|---|
random |
func random (var length len: Int = 0, charset: String = "...") -> String |
Operators
Name | Signature |
---|---|
[x] |
subscript(index: Int) -> String? |
[x..y] [x...y] |
subscript(range: Range<Int>) -> String |
[x, y, z] |
subscript (indexes: Int...) -> [String] |
S * n |
* (first: String, second: Int) -> String |
=~ |
=~ (string: String, pattern: String) -> Bool =~ (string: String, options: (pattern: String, ignoreCase: Bool)) -> Bool =~ (strings: [String], pattern: String) -> Bool =~ (strings: [String], options: (pattern: String, ignoreCase: Bool)) -> Bool |
|~ | |~ (string: String, pattern: String) -> Bool|~ (string: String, options: (pattern: String, ignoreCase: Bool)) -> Bool |
Range
Examples in the Wiki
Instance Methods
Name | Signatures |
---|---|
times |
times (call: (T) -> ()) times (call: () -> ()) |
each |
each (call: (T) -> ()) |
toArray |
toArray () -> [T] |
Class Methods
Name | Signature |
---|---|
random |
random (from: Int, to: Int) -> Range<Int> |
Operators
Name | Signature | Function |
---|---|---|
= |
== <U: ForwardIndex> (first: Range<U>, second: Range<U>) -> Bool |
Compares 2 ranges |
Dictionary
Examples in the Wiki
Instance Methods
Name | Signatures |
---|---|
difference |
difference <V: Equatable> (dictionaries: [Key: V]...) -> [Key: V] |
union |
union (dictionaries: [Key: Value]...) -> [Key: Value] |
intersection |
intersection <K, V where K: Equatable, V: Equatable> (dictionaries: [K: V]...) -> [K: V] |
has |
has (key: Key) -> Bool |
map |
map <K, V> (mapFunction map: (Key, Value) -> (K, V)) -> [K: V] |
mapFilter |
mapFilter <K, V> (mapFunction map: (Key, Value) -> (K, V)?) -> [K: V] |
mapValues |
mapValues <V> (mapFunction map: (Key, Value) -> (V)) -> [Key: V] |
mapFilterValues |
mapFilterValues <V> (mapFunction map: (Key, Value) -> V?) -> [Key: V] |
each |
each(eachFunction each: (Key, Value) -> ()) |
filter |
filter(testFunction test: (Key, Value) -> Bool) -> [Key: Value] |
merge |
merge (dictionaries: [Key: Value]...) -> [Key: Value] |
shift |
shift () -> (Key, Value) |
groupBy |
groupBy <T> (groupingFunction group: (Key, Value) -> (T)) -> [T: Array<Value>] |
countBy |
countBy <T> (groupingFunction group: (Key, Value) -> (T)) -> [T: Int] |
countWhere |
countWhere (test: (Key, Value) -> (Bool)) -> Int |
any |
any (test: (Key, Value) -> (Bool)) -> Bool |
all |
all (test: (Key, Value) -> (Bool)) -> Bool |
reduce |
reduce <U> (initial: U, combine: (U, Element) -> U) -> U |
pick , at |
pick (keys: [Key]) -> Dictionary pick (keys: Key...) -> Dictionary at (keys: Key...) -> Dictionary |
toArray |
toArray <V> (mapFunction map: (Key, Value) -> V) -> [V] |
Operators
Name | Signature | Function |
---|---|---|
- |
- <K, V: Equatable> (first: Dictionary<K, V>, second: Dictionary<K, V>) -> Dictionary<K, V> |
Difference |
& |
& <K, V: Equatable> (first: Dictionary<K, V>, second: Dictionary<K, V>) -> Dictionary<K, V> |
Intersection |
| | | (first: Dictionary, second: Dictionary) -> Dictionary | Union |
NSArray
Examples in the Wiki
Instance Methods
Name | Signatures |
---|---|
cast |
cast <OutType> () -> [OutType] |
flatten |
flatten <OutType> () -> [OutType] |
flattenAny |
flattenAny () -> [AnyObject] |
SequenceOf
The following operations can be performed on sequences and are evaluated lazily. Each operation only takes the data it requires from the source sequence in order to return its result.
The Sequence
protocol cannot be extended, hence the following are extensions to SequenceOf
. They can be used as follows:
var source: Sequence = ...
var filteredSequence = SequenceOf(source).filter { ... }
Instance Methods
Name | Signatures |
---|---|
first |
first () -> T? |
any |
any (call: (T) -> Bool) -> Bool |
get |
get (index: Int) -> T? |
get |
get (range: Range<Int>) -> SequenceOf<T> |
indexOf |
indexOf <U: Equatable> (item: U) -> Int? |
filter |
filter(include: (T) -> Bool) -> SequenceOf<T> |
reject |
reject (exclude: (T -> Bool)) -> SequenceOf<T> |
skipWhile |
skipWhile(condition:(T) -> Bool) -> SequenceOf<T> |
skip |
skip (n:Int) -> SequenceOf<T> |
contains |
contains<T:Equatable> (item: T) -> Bool |
take |
take (n:Int) -> SequenceOf<T> |
takeWhile |
takeWhile (condition:(T?) -> Bool) -> SequenceOf<T> |
Double
Examples in the Wiki
Instance Methods
Name | Signature |
---|---|
abs |
abs () -> Double |
sqrt |
sqrt () -> Double |
round |
round () -> Double |
ceil |
ceil () -> Double |
floor |
floor () -> Double |
clamp |
clamp (min: Double, _ max: Double) -> Double |
roundToNearest |
roundToNearest(increment: Double) -> Double |
Class Methods
Name | Signatures |
---|---|
random |
random(min: Double = 0, max: Double) -> Double |
NSDate
Properties
Name | Signatures |
---|---|
year |
Int |
month |
Int |
weekday |
Int |
weekMonth |
Int |
days |
Int |
hours |
Int |
minutes |
Int |
seconds |
Int |
Instance Methods
Name | Signatures |
---|---|
add |
add(seconds:Int=0, minutes:Int = 0, hours:Int = 0, days:Int = 0, weeks:Int = 0, months:Int = 0, years:Int = 0) -> NSDate |
addSeconds |
addSeconds (seconds:Int) -> NSDate |
addMinutes |
addMinutes (minute:Int) -> NSDate |
addHours |
addHours(hours:Int) -> NSDate |
addDays |
addDays(days:Int) -> NSDate |
addWeeks |
addWeeks(weeks:Int) -> NSDate |
addMonths |
addMonths(months:Int) -> NSDate |
addYears |
addYears(years:Int) -> NSDate |
isAfter |
isAfter(date: NSDate) -> Bool |
isBefore |
isBefore(date: NSDate) -> Bool |
getComponent |
getComponent (component : NSCalendarUnit) -> Int |
Operators
Name | Signatures |
---|---|
== |
==(lhs: NSDate, rhs: NSDate) -> Bool |
< |
<(lhs: NSDate, rhs: NSDate) -> Bool |
> |
>(lhs: NSDate, rhs: NSDate) -> Bool |
<= |
<=(lhs: NSDate, rhs: NSDate) -> Bool |
>= |
>=(lhs: NSDate, rhs: NSDate) -> Bool |
== |
==(lhs: NSDate, rhs: NSDate) -> Bool |
Utilities
Examples in the Wiki
Class Methods
Name | Signatures |
---|---|
after |
after <P, T> (n: Int, function: P -> T) -> (P -> T?) func after <T> (n: Int, function: () -> T) -> (() -> T?) |
once |
once <P, T> (function: P -> T) -> (P -> T?) once <T> (call: Void -> T) -> (Void -> T?) |
partial |
partial <P, T> (function: (P...) -> T, _ parameters: P...) -> ((P...) -> T?) |
bind |
bind <P, T> (function: (P...) -> T, _ parameters: P...) -> (() -> T) |
cached |
cached <P, R> (function: P -> R) -> (P -> R) cached <P, R> (function: (P...) -> R) -> ((P...) -> R) cached <P, R> (function: (P...) -> R, hash: ((P...) -> P)) -> ((P...) -> R) |
Operators
Name | Signatures |
---|---|
<=> |
<=> <T: Comparable>(lhs: T, rhs: T) -> Int |
To Do
- [X] Wiki
- [X] Xcode project for both iOS & OS X
- [X] Review code comments
- [ ] Example project
- [ ] Installation instructions
- [ ] Benchmark