Skip to content

Instantly share code, notes, and snippets.

View rjstelling's full-sized avatar
🕶️
Encrypting Bits

Richard Stelling rjstelling

🕶️
Encrypting Bits
View GitHub Profile
@rjstelling
rjstelling / SwiftCommandLineWithNSOperation.swift
Created November 27, 2015 12:58
Swift command line script using NSOperation.
#!/usr/bin/env xcrun swift
//
// SwiftCommandLineWithNSOperation.swift
// SwiftCommandLineWithNSOperation
//
// Created by Richard Stelling on 27/11/2015.
// Copyright © 2015 Richard Stelling. All rights reserved.
//
1. No coverage of Stock price... ever.
2. No coverage of carrier contracts or offers... Unless John Legere joins the Apple board I don't want to read his name.
3. Never publish patents as news.
4. I dont care about US only Apple Pay roll outs.
5. Do not commission renderings of UI designs of unreleased products.
6. No wish lists.
@rjstelling
rjstelling / SwiftCastingBug.swift
Created June 15, 2016 15:09
A Playground that demos a bug where a cast using `as` causes a, "fatal error: can't unsafeBitCast between types of different sizes".
//: Playground - Demos a bug where a cast using `as` causes a, "fatal error: can't unsafeBitCast between types of different sizes"
import UIKit
protocol Thingable {
func getStuff()
}
enum MyList: Thingable {
case One
@rjstelling
rjstelling / Suggestions
Created December 9, 2016 16:24
When Host.swift was started, it was before we new too much about Swift 3.0, now it has arrived we have a problem... NSHost has been renamed Host when imported into Swift 3.x. We don't want to be a bad Swift citizen and iOS still doesn't have (NS)Host. so we need to rename the project. At this point I am open to any suggestions... the simpler the…
When Host.swift was started, it was before we new too much about Swift 3.0, now it has arrived we have a problem...
NSHost has been renamed Host when imported into Swift 3.x. We don't want to be a bad Swift citizen and iOS still doesn't have (NS)Host. so we need to rename the project.
At this point I am open to any suggestions... the simpler the better IMHO.
Add your suggestions here:
@rjstelling
rjstelling / TwoLabelButton.swift
Created May 31, 2017 13:58
A simple Auto Layout solution for a UIButton with 2 labels.
class CustomButton: UIButton {
internal required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
internal override init(frame: CGRect) {
super.init(frame: frame)
}
}

iOS Device Model List

iPhone

  • iPhone1,1 — iPhone
  • iPhone1,2 — iPhone 3G
  • iPhone2,1 — iPhone 3GS
  • iPhone3,1 — iPhone 4 (GSM)
  • iPhone3,3 — iPhone 4 (CDMA/Verizon/Sprint)
  • iPhone4,1 — iPhone 4S
  • iPhone5,1 — iPhone 5 (model A1428, AT&T/Canada)
@rjstelling
rjstelling / Data+FNV32.swift
Created May 4, 2018 17:20
Data Extension for Fowler–Noll–Vo hash function
import Foundation
extension Data {
public var fnv32Hash: UInt32 {
return UInt32( self.reduce(0x811c9dc5) { 0x00000000FFFFFFFF & ($0 * 16777619) ^ UInt64($1) } )
}
public func fnv32HashString() -> String {
return String(format: "%08x", self.fnv32Hash)
@rjstelling
rjstelling / BaseFunctions.swift
Last active January 24, 2020 12:49
Simple base encoding and decoding in Swift.
import Foundation
public enum StringSearchError: Swift.Error {
case didNotFind(Character)
}
extension String {
static let ReducedDigits = "aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ0123456789"
static let DefaultBase36 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
@rjstelling
rjstelling / PrintIntegerAsBinaryString.swift
Created May 24, 2019 08:33
A generic function to print the "binary string" of any `FixedWidthInteger`.
func print<T: FixedWidthInteger>(asBinary val: T) {
let bitCount = MemoryLayout<T>.size * 8
let binaryStr = String(val, radix: 2)
let zeroPadding = String(repeating: "0", count: bitCount - binaryStr.count)
print("0b\(zeroPadding)\(binaryStr)")
}
@rjstelling
rjstelling / RegularExpressionValidation.swift
Created March 23, 2020 10:09
A `@propertyWrapper` that validates a string using a regular expression. If the string matches then it is assigned to the property if it does not then the property is net to nil. Also included is an example of validating email addresses.
import Foundation
@propertyWrapper
public struct RegularExpressionValidation {
private var _verifiedString: String?
private let _regexPattern: String
private lazy var _regex: NSRegularExpression? = try? NSRegularExpression(pattern: _regexPattern, options: [.caseInsensitive])
public init(_ regexString: String) {