ExSwift

标准类型和类的 Swift 扩展集。「A set of Swift extensions for standard types and classes.」

Github stars Tracking Chart

ExSwift

CocoaPods Carthage compatible Build Status

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

  1. Add ExSwift as a submodule
  2. Open the ExSwift project folder, and drag ExSwift sub folder with source code into the file navigator of your Xcode project. Make sure you select add to target
  3. 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>...) ->
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: ) ->
permutation, permutation (length: Int) ->
repeatedPermutation, repeatedPermutation(length: Int) ->
combination, combination (length: Int) ->
repeatedCombination , repeatedCombination (length: Int) ->

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
|, | <T: Equatable> (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, ----, NSTimeIntervalyears, NSTimeIntervalyear, NSTimeIntervaldays, NSTimeIntervalday, NSTimeIntervalhours, NSTimeIntervalhour, NSTimeIntervalminutes, NSTimeIntervalminute, NSTimeIntervalseconds, NSTimeIntervalsecond, #### 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>) -> Intclamp (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]) -> Dictionarypick (keys: Key...) -> Dictionaryat (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
|, | <K, V: Equatable> (first: Dictionary<K, V>, second: Dictionary<K, V>) -> Dictionary<K, V>, 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

  • Wiki
  • Xcode project for both iOS & OS X
  • Review code comments
  • Example project
  • Installation instructions
  • Benchmark

Main metrics

Overview
Name With OwnerpNre/ExSwift
Primary LanguageSwift
Program languageRuby (Language Count: 3)
Platform
License:Other
所有者活动
Created At2014-06-03 17:40:32
Pushed At2019-02-11 00:45:31
Last Commit At2015-06-08 14:34:22
Release Count11
Last Release Namev0.2.0 (Posted on )
First Release Name0.1.0 (Posted on 2014-06-10 21:21:58)
用户参与
Stargazers Count3.4k
Watchers Count146
Fork Count314
Commits Count311
Has Issues Enabled
Issues Count65
Issue Open Count25
Pull Requests Count59
Pull Requests Open Count12
Pull Requests Close Count18
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private