This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import SwiftUI | |
import TipKit | |
/// Encapsulate tip conditions with specified values. | |
protocol TipCondition { | |
func evaluate() -> (Binding<Bool>, is: Bool) | |
} | |
/// Conform `Binding<Bool>` to `TipCondition` with a default value of `true`. | |
extension Binding: TipCondition where Value == Bool { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import UIKit | |
extension UIStoryboard { | |
enum Name: String { | |
case main = "Main" | |
case otherStuff = "OtherStuff" | |
} | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// HandlesKeyboard.swift | |
// | |
// Created by Scott Gardner on 1/14/19. | |
// Copyright © 2019 Scott Gardner. All rights reserved. | |
// | |
import UIKit | |
protocol HandlesKeyboard where Self: UIViewController { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// From Swift 2 Essential Training http://www.lynda.com/Swift-tutorials/Using-labels/422096/447960-4.html | |
var i = 0 | |
let hello = "Hello, playground!" | |
start: do { | |
i++ | |
do { | |
print(hello) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import UIKit | |
/** | |
Returns an array of `CGPoint`s that are evenly distributed around the circumference of a circle for a number of points, center x, center y, and radius of the circle, and maximum number of decimal points precision for the x and y values. | |
- author: Scott Gardner | |
- parameter numberOfPoints: the number of points to plot; 1 or more | |
- parameter centerX: the center `x` of the circle | |
- parameter centerY: the center `y` of the circle | |
- parameter radius: the radius of the circle (distance from center) | |
- parameter precision: the maximum number of decimal places precision, 0 or higher, **defaults to 3** |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Foundation | |
/** | |
Returns a `Dictionary` of `String` keys and `String` values for each key/value pair in an `NSURL` query string. | |
- author: Scott Gardner | |
- seealso: | |
* [Source on GitHub](http://bit.ly/SwiftQueryItemsDictionaryNSURLExtension) | |
*/ | |
extension NSURL { | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
extension Array where Element: UIView { | |
/** | |
Sorts an array of `UIView`s or subclasses by `tag`. For example, this is useful when working with `IBOutletCollection`s, whose order of elements can be changed when manipulating the views in Interface Builder. Just tag your views in Interface Builder and then call this method on your `IBOutletCollection`s in `viewDidLoad()`. | |
- author: Scott Gardner | |
- seealso: | |
* [Source on GitHub](http://bit.ly/SortUIViewsInPlaceByTag) | |
*/ | |
mutating func sortUIViewsInPlaceByTag() { | |
sortInPlace { (left: Element, right: Element) in |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
func ==(x: HashableType, y: HashableType) -> Bool { | |
return x.isEqual(y.value) | |
} | |
struct HashableType: Hashable { | |
let value: Any | |
var hashValue: Int { | |
return getHashValue() | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
extension Int { | |
/** | |
`true` if self is a prime number, i.e., can only be divided evenly by 1 and itself. | |
- author: Scott Gardner | |
- seealso: | |
* [Source on GitHub](http://bit.ly/SwiftIntIsPrimeExtension) | |
*/ | |
public var isPrime: Bool { | |
guard self > 1 else { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Foundation | |
/** | |
Converts any numeric literal (e.g., 1) or string containing a numeric literal (e.g., "1"), into a spelled-out number string (e.g., "one"). [Source on GitHub](http://bit.ly/SwiftSpellOutNumber) | |
- parameter number: a numeric literal, or string containing a numeric literal | |
- returns: String? | |
*/ | |
public func spellOut<N>(number: N) -> String? { | |
let formatter = NumberFormatter() | |
formatter.numberStyle = .spellOut |
NewerOlder