Skip to content

Instantly share code, notes, and snippets.

View nathanhillyer's full-sized avatar

Nathan Hillyer nathanhillyer

View GitHub Profile
@nathanhillyer
nathanhillyer / .gitignore
Created May 12, 2016 16:26
Swift gitignore
#####
# Xcode private settings (window sizes, bookmarks, breakpoints, custom executables, smart groups)
#
# This is complicated:
#
# SOMETIMES you need to put this file in version control.
# Apple designed it poorly - if you use "custom executables", they are
# saved in this file.
# 99% of projects do NOT use those, so they do NOT want to version control this file.
# ..but if you're in the 1%, comment out the line "*.pbxuser"
class ProjectManager {
func increaseProductivity(developer: Developer) {
guard let name = person.name else {
print("This person doesn't have a name, did his identity get stolen?")
return
}
slackMessage.text = "\(name) is a great iOS Developer!")
import Foundation
/**
Executes the closure on the main queue after a set amount of seconds.
- parameter delay: Delay in seconds
- parameter closure: Code to execute after delay
*/
func delayOnMainQueue(delay: Double, closure: ()->()) {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(delay * Double(NSEC_PER_SEC))), dispatch_get_main_queue(), closure)
[self loginViaHttpWithRequest:request completionBlockWithSuccess:^(LoginOperation *operation, id responseObject) {
[self showMainScreen];
} failure:^(LoginOperation *operation, NSError *error) {
[self showFailedLogin];
}];
loginViaHttp(request) { response in
if response.success {
showMainScreen()
} else {
showFailedLogin()
}
}
// The return value of this function is () -> Int
// This means we are returning a function that returns an Int
func makeIncrementer(forIncrement amount: Int) -> () -> Int {
var runningTotal = 0
// Nested function that uses the runningTotal variable
func incrementer() -> Int {
runningTotal += amount
return runningTotal
}
func reverseAndRepeatString(stringToReverse: String, numberOfReverses: Int) -> String {
let reverseString: () -> String = { transformString(stringToReverse, transformation: { String($0.characters.reverse()) }) }
let repeatString: (() -> String) -> String = {
var repeated = ""
for _ in 1...numberOfReverses {
repeated += $0()
}
return repeated
}
func reverseAndRepeatString(stringToReverse: String, numberOfReverses: Int) -> String {
let reversed = transformString(stringToReverse, transformation: { String($0.characters.reverse()) })
return transformString(reversed, transformation: {
var repeated = ""
for _ in 1...numberOfReverses {
repeated += $0
}
return repeated
})
}
func reverseAndRepeatString(stringToReverse: String, numberOfReverses: Int) {
transformString(stringToReverse, transformation: { (stringToTransform) -> String in
let reversedString = String(stringToTransform.characters.reverse())
var reversed = ""
for _ in 1...numberOfReverses {
reversed += reversedString
}
return reversed
})
}
func transformString(stringToTransform: String, transformation: (String) -> String) -> String {
return transformation(stringToTranform)
}