Skip to content

Instantly share code, notes, and snippets.

View ahcode0919's full-sized avatar
🏠
Working from home

A. Hinton ahcode0919

🏠
Working from home
  • Worldwide
View GitHub Profile
@ahcode0919
ahcode0919 / date-time.swift
Last active April 17, 2017 23:00
Example of handling dates in Swift
let dateString = "09 Aug 2016 17:53:51 -0700"
let dateFormatter = NSDateFormatter()
// Good resource for date time format syntax
//http://userguide.icu-project.org/formatparse/datetime
dateFormatter.dateFormat = "dd MMM yyyy HH:mm:ss ZZZ"
let date = dateFormatter.dateFromString(dateString) //NSDate = "Aug 09, 2016, 5:53 PM"
@ahcode0919
ahcode0919 / singleton-pattern.swift
Last active March 3, 2021 06:44
Example of the singleton pattern in Swift
//XCode Playground Friendly
/**
Singleton Pattern - Ensures that only one instance of a object exists in the application context
usefull for things that will have a global context across the app.
Ex: An internet connection, Credentials, etc.
* Can only be used for reference types.
*/
@ahcode0919
ahcode0919 / builder-pattern.swift
Last active April 17, 2017 22:59
Example of the builder pattern in Swift with protocols
//Playground friendly
import Foundation
/*
The Builder Pattern helps in the creation of complex objects
*Implemented with Protocols
*/
/* Before Builder Pattern is implemented */
@ahcode0919
ahcode0919 / anagram-algorithm.swift
Last active April 24, 2022 17:49
Example of an anagram algorithm in Swift
//Anagram - Two words that contain the same characters
let testWord = "abcde"
let testWord2 = "edcba"
func isAnagram(word word: String, isAnagramOf word2: String) -> Bool {
guard
let word1Dictionary = countChars(word),
let word2Dictionary = countChars(word2) else {
return false
@ahcode0919
ahcode0919 / reverse-a-string-algorithm.swift
Last active October 29, 2021 12:59
A few ways to reverse a string in Swift
let word = "abcdefg"
//Using swift lib
String(word.characters.reverse()) //"gfedcba"
//Using char array and insert
func reverseString(wordToReverse: String) -> String {
guard wordToReverse.characters.count > 1 else {
return wordToReverse
}
@ahcode0919
ahcode0919 / factory-pattern.swift
Last active April 17, 2017 22:56
Example of the factory pattern in Swift
//Factory Pattern (Creational)
//Allows logic of which type will be created to be handled by a method
protocol SimpleType {
var simpleName: String { get }
}
struct Type1: SimpleType {
var simpleName: String = "Type1"
}
@ahcode0919
ahcode0919 / bridge-pattern.swift
Last active August 19, 2020 20:42
Example of the bridge pattern in Swift
// Bridge pattern (Structural)
//
// Decouples an abstraction from its implementation, so that the two can vary independently.
// Accomplished by seperating two interacting features and then creating a bridge type to
// handle where they overlap
protocol Database {
func closeConnection()
func openConnection()
func saveRecord(recordToSave: Record)
}
@ahcode0919
ahcode0919 / swift-custom-maps.swift
Last active April 17, 2017 22:54
Custom Maps in Swift
//Custom Map functions
//Experimenting with making custom map functions
//Original Map implementation: https://github.com/apple/swift/blob/master/stdlib/public/core/Sequence.swift
extension Sequence {
func mapToDictionary<T>(_ transform: (Iterator.Element) throws -> (String, T)) rethrows -> [String: T] {
let initialCapacity = underestimatedCount
var result = [String: T]()
var iterator = self.makeIterator()
@ahcode0919
ahcode0919 / swift-zip.swift
Last active April 17, 2017 22:54
Swift Zip function usage
//Zip function (Sequence)
// https://github.com/apple/swift/blob/master/stdlib/public/core/Zip.swift
// https://developer.apple.com/reference/swift/1541125-zip
// http://swiftdoc.org/v3.0/func/zip/
let array1 = ["one", "two", "three", "four", "five"]
let array2 = 1...5
let zipSequence = zip(array1, array2)
type(of: zipSequence) //Zip2Sequence<Array<String>, CountableClosedRange<Int>>.Type
@ahcode0919
ahcode0919 / Swift-Operators.swift
Last active April 17, 2017 22:54
Creating custom operators in Swift
//Creating an operator
//prefix, postfix, infix
//https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Declarations.html
//https://developer.apple.com/reference/swift/swift_standard_library_operators
postfix operator ***
///Cubes value
postfix func *** (_ input: Int) -> Int {
return input * input * input