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 | |
/// Object observing keyboard changes and passing a `KeyboardChangeInfo` to notify about changes. | |
final class KeyboardObserver: NSObject { | |
typealias KeyboardChangeClosure = (KeyboardChangeInfo) -> Void | |
let changeClosure: KeyboardChangeClosure | |
// MARK: - Private |
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 | |
import CoreSpotlight | |
import MobileCoreServices | |
public typealias Completion = NSError? -> Void | |
// MARK: - Searchable Protocol | |
public protocol Searchable { | |
static var spotlightDomainIdentifier: String { get } |
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 | |
extension Equatable { | |
/// Whether `self` is contained in a list of other values. | |
/// Variadic version, see the method below for the generic implementation. | |
/// | |
/// - Parameter others: The values that `self` should be checked against. | |
/// - Returns: Whether or not `self` is one of the provided other values. | |
func isOne(of others: Self...) -> 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 Foundation | |
final class Log: NSObject { | |
enum Topic: String { | |
case network, app | |
} | |
private enum Level: String { | |
case info = "" |
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 | |
import SystemConfiguration | |
extension Notification.Name { | |
public static let reachabilityChanged = Notification.Name(rawValue: "reachabilityChanged") | |
} | |
protocol ReachabilityObserver: class { | |
func reachabilityDidChange(_ reachability: Reachability) | |
} |
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 String { | |
subscript(index: Int) -> Character { | |
return self[startIndex.advancedBy(index)] | |
} | |
subscript(range: Range<Int>) -> String { | |
let start = startIndex.advancedBy(range.startIndex) | |
let end = startIndex.advancedBy(range.endIndex) |
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 DispatchQueue { | |
/// Helper method to use when reading from a resource | |
/// that is being isolated by this queue. | |
/// | |
/// Using this method retriving a value like this: | |
/// ``` | |
/// var result: T? | |
/// queue.sync { | |
/// result = resource["key"] |
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 | |
import PlaygroundSupport | |
PlaygroundPage.current.needsIndefiniteExecution = true | |
extension Comparable { | |
/// Clamp the value between `low` and `high` | |
func clamp(_ low: Self, _ high: Self) -> Self { |
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
public extension IteratorProtocol { | |
mutating public func any(_ predicate: (Element) throws -> Bool) rethrows -> Bool { | |
guard let current = next() else { return false } | |
return try predicate(current) || any(predicate) | |
} | |
mutating public func all(_ predicate: (Element) throws -> Bool) rethrows -> Bool { | |
guard let current = next() else { return true } | |
return try predicate(current) && all(predicate) |
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
NSMutableDictionary *vibrationParameters = [[NSMutableDictionary alloc] init]; | |
vibrationParameters[@"VibePattern"] = @[@YES, @100]; | |
vibrationParameters[@"Intensity"] = @1; | |
#pragma clang diagnostic push | |
#pragma clang diagnostic ignored "-Wimplicit-function-declaration" | |
AudioServicesStopSystemSound(kSystemSoundID_Vibrate); | |
AudioServicesPlaySystemSoundWithVibration(kSystemSoundID_Vibrate, nil, vibrationParameters); | |
#pragma clang diagnostic pop |