Skip to content

Instantly share code, notes, and snippets.

@cprovatas
cprovatas / gist:8d4dafaa13da058da32b0f68f625b424
Created October 19, 2017 17:49
Solution to eliminate boilerplate code when Implementing Equatable for Associated Value Enums
import UIKit
protocol AutoEquatableEnum {
static func == (lhs: Self, rhs: Self) -> Bool
}
extension AutoEquatableEnum {
static func == (lhs: Self, rhs: Self) -> Bool {
return lhs.data == rhs.data
}
@cprovatas
cprovatas / BlockBasedSelector.h
Last active June 1, 2023 01:34
Block-Based Selectors in Swift
//
// BlockBasedSelector.h
//
// Created by Charlton Provatas on 11/2/17.
// Copyright © 2017 CharltonProvatas. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface BlockBasedSelector : NSObject
@cprovatas
cprovatas / Array+Spread.swift
Last active July 22, 2023 02:04
Spread Syntax for Swift Arrays (ala es6)
extension Array {
static func ... (lhs: [Self.Element], rhs: [Self.Element]) -> [Self.Element] {
var copy = lhs
copy.append(contentsOf: rhs)
return copy
}
static func ... (lhs: Self.Element, rhs: [Self.Element]) -> [Self.Element] {
var copy = [lhs]
copy.append(contentsOf: rhs)
@cprovatas
cprovatas / Data+PrettyPrint.swift
Created May 23, 2018 15:52
Pretty print JSON string from Data in Swift 4.1 (especially useful printing to Xcode console)
import Foundation
extension Data {
var prettyPrintedJSONString: NSString? { /// NSString gives us a nice sanitized debugDescription
guard let object = try? JSONSerialization.jsonObject(with: self, options: []),
let data = try? JSONSerialization.data(withJSONObject: object, options: [.prettyPrinted]),
let prettyPrintedString = NSString(data: data, encoding: String.Encoding.utf8.rawValue) else { return nil }
return prettyPrintedString
}