     ///Attempts to parse a string to a date using one of the common variations on ISO8601
     class func tryParseISO8601LikeDateString(date:String) -> NSDate? {
         for precision in ISO8601ExtendedPrecision.allValues {
-            let formatter:NSDateFormatter = ISO8601FormatterForThread(precision)
+            let formatter:NSDateFormatter = ISO8601FormatterCached(precision)
             if let result = formatter.dateFromString(date) {
                 return result
             }

import Foundation

extension NSDateFormatter {
    enum ISO8601ExtendedPrecision:Int {
        case conforming, milliseconds, microseconds
        case java, windows

        return dateFormatterISO8601
    }
    
    ///Return cached ISO8601 date formatter for thread safe operation, assumes >iOS7 || >OSX10.9+64bit
    class func ISO8601FormatterCached(precision:ISO8601ExtendedPrecision = .conforming) -> NSDateFormatter {
        let formatterKey:String = "com.cyberdev.ISO8601Formatter.\(precision.rawValue)"
        if let formatter:NSDateFormatter = formatterCache[formatterKey] {
            return formatter
        } else {
            let formatter:NSDateFormatter = ISO8601Formatter(precision)
            formatterCache[formatterKey] = formatter
            return formatter
        }
    }
