View FibonacciGenerator.swift
import UIKit | |
struct FibonacciGenerator: GeneratorType, SequenceType { | |
var (f1, f2) = (1, 1) | |
mutating func next() -> Int? { | |
let result = f1 | |
(f1, f2) = (f2, f1 + f2) | |
return result |
View Push & Pop.swift
extension Array { | |
mutating func pop() -> T? { | |
return self.removeAtIndex(0) | |
} | |
mutating func push(element: T) { | |
self.append(element) | |
} | |
} |
View DEBUG_LOG.h
#ifndef DEBUG_LOG | |
#ifdef DEBUG | |
#define DEBUG_LOG(fmt, ...) NSLog(fmt, ##__VA_ARGS__) | |
#else | |
#define DEBUG_LOG(fmt, ...) | |
#endif | |
#endif |
View ERROR_LOG.h
#ifndef ERROR_LOG | |
#ifdef DEBUG | |
#define ERROR_LOG(error) if(error){NSLog(@"%s Error: %@", __PRETTY_FUNCTION__, error);} | |
#else | |
#define ERROR_LOG(error) | |
#endif | |
#endif |
View NSString+CharacterEnumeration.m
typedef void(^StringEnumerationBlock)(NSString *characterString, NSUInteger index, BOOL *stop); | |
- (void)enumerateCharactersUsingBlock:(StringEnumerationBlock)block { | |
NSParameterAssert(block); | |
BOOL stop = NO; | |
for (NSUInteger i = 0; i < self.length; i++) { | |
const unichar character = [self characterAtIndex:i]; | |
NSString *characterString = [NSString stringWithCharacters:&character length:1]; | |
block(characterString, i, &stop); | |
if (stop) { |
View NSString+Levenshtein.m
@implementation NSString (Levenshtein) | |
- (NSUInteger)lev_distanceToString:(NSString *)comparisonString { | |
NSString *referenceString = [self copy]; | |
NSUInteger referenceLength = referenceString.length; | |
NSUInteger comparisonLength = comparisonString.length; | |
unsigned long m, n; | |
unsigned int distanceMatrix[comparisonLength + 1][referenceLength + 1]; | |
distanceMatrix[0][0] = 0; |
View UIFaces.swift
import UIKit | |
typealias JSON = [String: AnyObject] | |
public typealias ImageRequestCompletion = (UIImage?, NSError?) -> Void | |
public enum UserImageSize: String { | |
case Epic = "epic" | |
case Big = "bigger" | |
case Normal = "normal" | |
case Tiny = "mini" |
View CurrencyDataSource.swift
struct Currency { | |
let code, displayName: String | |
init?(code: String?) { | |
if let code = code, | |
displayName = NSLocale.systemLocale().displayNameForKey(NSLocaleCurrencyCode, value:code) { | |
self.code = code | |
self.displayName = displayName | |
} else { |
View matrix.swift
public struct MatrixIndex: BidirectionalIndexType { | |
public let x, y : Int | |
private let columns: Int | |
public func successor() -> MatrixIndex { | |
return (x + 1 == columns) ? | |
MatrixIndex(x: 0, y: y + 1, columns: columns) : | |
MatrixIndex(x: x + 1, y: y, columns: columns) |
View optional-assignment.swift
infix operator ?= { | |
associativity right | |
precedence 90 | |
assignment | |
} | |
func ?=<T>(inout variable: T?, expr: @autoclosure () -> T) { | |
if variable == nil { | |
variable = expr() | |
} |
OlderNewer