Created
July 22, 2016 13:59
-
-
Save zwaldowski/b9e9187b6bceba7b47be2ccef25ef1fb to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Foundation | |
private extension NSPersonNameComponentsFormatter { | |
static let nameDefaultsByLocale: [String: AnyObject] = { | |
let bundle = NSBundle(forClass: NSPersonNameComponentsFormatter.self) | |
guard let url = bundle.URLForResource("NSPersonNameComponentsFormatterDefaults", withExtension: "plist"), | |
let dict = NSDictionary(contentsOfURL: url) as? [String: AnyObject] else { return [:] } | |
return dict["localeInfo"] as! [String: AnyObject] | |
}() | |
static func supportedNameDefaults(from locale: NSLocale) -> [String: AnyObject] { | |
let preferredLocalization = NSBundle.preferredLocalizationsFromArray(Array(nameDefaultsByLocale.keys), forPreferences: [ locale.localeIdentifier ]) | |
return nameDefaultsByLocale[preferredLocalization[0]] as! [String: AnyObject] | |
} | |
} | |
extension NSPersonNameComponentsFormatter { | |
enum Order: Int { | |
// "unset" is 0 | |
case givenNameFirst = 1, familyNameFirst | |
} | |
static func userPreferredOrder(for locale: NSLocale = .currentLocale()) -> Order { | |
if let order = Order(rawValue: NSUserDefaults.standardUserDefaults().integerForKey("NSPersonNameDefaultDisplayNameOrder")) { | |
return order | |
} else if let order = (supportedNameDefaults(from: locale)["nameOrder"] as? Int).flatMap(Order.init) { | |
return order | |
} else { | |
return .givenNameFirst | |
} | |
} | |
} | |
NSPersonNameComponentsFormatter.userPreferredOrder(for: .init(localeIdentifier: "en_US")) | |
NSPersonNameComponentsFormatter.userPreferredOrder() | |
// https://github.com/apple/swift/blob/swift-2.3-branch/stdlib/private/StdlibUnittestFoundationExtras/StdlibUnittestFoundationExtras.swift | |
NSPersonNameComponentsFormatter.userPreferredOrder(for: .init(localeIdentifier: "ja_JP")) | |
withOverriddenNSLocaleCurrentLocale("ja_JP") { | |
NSPersonNameComponentsFormatter.userPreferredOrder() | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment