Skip to content

Instantly share code, notes, and snippets.

Silvan Daehn daehn

Block or report user

Report or block daehn

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View XCTestCase+Await.swift
extension XCTestCase {
struct AwaitError: Error {}
/**
This function is useful for asynchronous testing and acts as a wrapper around test expectations.
Consider the following example:
```swift
// Let's asume we have an async function with the following signature:
View XCTestCase+Fixture.swift
extension XCTestCase {
enum FixtureError: Error {
case resourceNotFound
case invalidFormat
}
/// Loads the json fixture with the given name from disk and returns a json object.
/// - Parameter fileName: The anme of the fixture on disk (without the type suffix).
/// - Throws: Any errors encountered during the process.
View RateLimit.swift
import Foundation
private let log = Log(topic: .rateLimit)
/// Timeout based rate limit helper class.
final class RateLimit {
// MARK: - Private
private let timeout: TimeInterval
View OnceToken.swift
final class OnceToken {
private(set) lazy var perform: () -> Void = {
self.closure()
return {}
}()
private let closure: () -> Void
init(execute closure: @escaping () -> Void) {
@daehn
daehn / asset_extensions.stencil
Last active Jan 30, 2019
SwiftGen Stencil template to create UIColor and UIImage extensions for all asset catalogs.
View asset_extensions.stencil
/// Attention: Changes made to this file will not have any effect and will be reverted
/// when building the project. Please adjust the Stencil template `asset_extensions.stencil` instead.
/// See https://github.com/SwiftGen/SwiftGen#bundled-templates-vs-custom-ones for more information.
import UIKit
// MARK: - Private Helper -
private final class BundleToken {}
private let bundle = Bundle(for: BundleToken.self)
@daehn
daehn / Log.swift
Last active Nov 12, 2018
Lightweight logging class supporting different topics
View Log.swift
import Foundation
final class Log: NSObject {
enum Topic: String {
case network, app
}
private enum Level: String {
case info = ""
@daehn
daehn / Reachability.swift
Created Oct 24, 2018
iOS Reachability Helper
View Reachability.swift
import Foundation
import SystemConfiguration
extension Notification.Name {
public static let reachabilityChanged = Notification.Name(rawValue: "reachabilityChanged")
}
protocol ReachabilityObserver: class {
func reachabilityDidChange(_ reachability: Reachability)
}
View OneOf.swift
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 {
View UTType.swift
import Foundation
import MobileCoreServices
struct UTType: CustomStringConvertible {
let value: CFString
init?(mimeType: String) {
guard let UTI = UTTypeCreatePreferredIdentifierForTag(kUTTagClassMIMEType, mimeType as CFString, nil)?.takeUnretainedValue() else { return nil }
value = UTI
}
@daehn
daehn / Dictionary+EnumSubscript.swift
Created Oct 5, 2017
Subscript a dictionary with an enum having a matching rawValue type without having to use .rawValue after the case
View Dictionary+EnumSubscript.swift
extension Dictionary {
subscript<T: RawRepresentable>(_ key: T) -> Value? where T.RawValue == Key {
return self[key.rawValue]
}
}
// Usage:
enum Type: Int {
case easy
}
You can’t perform that action at this time.