From 2c884c40f15d0614647f9b2df24d10543ee71b8e Mon Sep 17 00:00:00 2001 From: Nick O'Neill Date: Fri, 10 Apr 2015 15:25:01 -0700 Subject: [PATCH 1/2] Updated for swift 1.2 --- Source/Armchair.swift | 63 ++++++++++++++++++++++--------------------- 1 file changed, 32 insertions(+), 31 deletions(-) diff --git a/Source/Armchair.swift b/Source/Armchair.swift index bf2aafd..b61c3c4 100644 --- a/Source/Armchair.swift +++ b/Source/Armchair.swift @@ -586,20 +586,20 @@ public func shouldIncrementUseCountClosure(shouldIncrementUseCountClosure: Armch public class StandardUserDefaults: ArmchairDefaultsObject { let defaults = NSUserDefaults.standardUserDefaults() - public func objectForKey(defaultName: String) -> AnyObject? { return defaults.objectForKey(defaultName) } - public func setObject(value: AnyObject?, forKey defaultName: String) { defaults.setObject(value, forKey: defaultName) } - public func removeObjectForKey(defaultName: String) { defaults.removeObjectForKey(defaultName) } + @objc public func objectForKey(defaultName: String) -> AnyObject? { return defaults.objectForKey(defaultName) } + @objc public func setObject(value: AnyObject?, forKey defaultName: String) { defaults.setObject(value, forKey: defaultName) } + @objc public func removeObjectForKey(defaultName: String) { defaults.removeObjectForKey(defaultName) } - public func stringForKey(defaultName: String) -> String? { return defaults.stringForKey(defaultName) } - public func integerForKey(defaultName: String) -> Int { return defaults.integerForKey(defaultName) } - public func doubleForKey(defaultName: String) -> Double { return defaults.doubleForKey(defaultName) } - public func boolForKey(defaultName: String) -> Bool { return defaults.boolForKey(defaultName) } + @objc public func stringForKey(defaultName: String) -> String? { return defaults.stringForKey(defaultName) } + @objc public func integerForKey(defaultName: String) -> Int { return defaults.integerForKey(defaultName) } + @objc public func doubleForKey(defaultName: String) -> Double { return defaults.doubleForKey(defaultName) } + @objc public func boolForKey(defaultName: String) -> Bool { return defaults.boolForKey(defaultName) } - public func setInteger(value: Int, forKey defaultName: String) { defaults.setInteger(value, forKey: defaultName) } - public func setDouble(value: Double, forKey defaultName: String) { defaults.setDouble(value, forKey: defaultName) } - public func setBool(value: Bool, forKey defaultName: String) { defaults.setBool(value, forKey: defaultName) } + @objc public func setInteger(value: Int, forKey defaultName: String) { defaults.setInteger(value, forKey: defaultName) } + @objc public func setDouble(value: Double, forKey defaultName: String) { defaults.setDouble(value, forKey: defaultName) } + @objc public func setBool(value: Bool, forKey defaultName: String) { defaults.setBool(value, forKey: defaultName) } - public func synchronize() -> Bool { return defaults.synchronize() } + @objc public func synchronize() -> Bool { return defaults.synchronize() } } public enum ArmchairKey: String, Printable { @@ -691,8 +691,8 @@ public class Manager : ArmchairManager { private func defaultAppName() -> String { let mainBundle = NSBundle.mainBundle() let displayName = mainBundle.objectForInfoDictionaryKey("CFBundleDisplayName") as? String - let bundleNameKey = kCFBundleNameKey as NSString? - let name = mainBundle.objectForInfoDictionaryKey(bundleNameKey as String) as? String + let bundleNameKey = kCFBundleNameKey as String + let name = mainBundle.objectForInfoDictionaryKey(bundleNameKey) as? String return displayName ?? name ?? "This App" } @@ -918,8 +918,9 @@ public class Manager : ArmchairManager { private func _incrementCountForKeyType(incrementKeyType: ArmchairKey) { var incrementKey = keyForArmchairKeyType(incrementKeyType) + let bundleVersionKey = kCFBundleVersionKey as String // App's version. Not settable as the other ivars because that would be crazy. - let currentVersion = NSBundle.mainBundle().objectForInfoDictionaryKey(kCFBundleVersionKey) as? NSString + let currentVersion = NSBundle.mainBundle().objectForInfoDictionaryKey(bundleVersionKey) as? String if currentVersion == nil { assertionFailure("Could not read kCFBundleVersionKey from InfoDictionary") return @@ -1411,31 +1412,31 @@ public class Manager : ArmchairManager { private func setKey(key: NSString, armchairKeyType: ArmchairKey) { switch armchairKeyType { case .FirstUseDate: - armchairKeyFirstUseDate = key + armchairKeyFirstUseDate = key as String case .UseCount: - armchairKeyUseCount = key + armchairKeyUseCount = key as String case .SignificantEventCount: - armchairKeySignificantEventCount = key + armchairKeySignificantEventCount = key as String case .CurrentVersion: - armchairKeyCurrentVersion = key + armchairKeyCurrentVersion = key as String case .RatedCurrentVersion: - armchairKeyRatedCurrentVersion = key + armchairKeyRatedCurrentVersion = key as String case .DeclinedToRate: - armchairKeyDeclinedToRate = key + armchairKeyDeclinedToRate = key as String case .ReminderRequestDate: - armchairKeyReminderRequestDate = key + armchairKeyReminderRequestDate = key as String case .PreviousVersion: - armchairKeyPreviousVersion = key + armchairKeyPreviousVersion = key as String case .PreviousVersionRated: - armchairKeyPreviousVersionRated = key + armchairKeyPreviousVersionRated = key as String case .PreviousVersionDeclinedToRate: - armchairKeyPreviousVersionDeclinedToRate = key + armchairKeyPreviousVersionDeclinedToRate = key as String case .RatedAnyVersion: - armchairKeyRatedAnyVersion = key + armchairKeyRatedAnyVersion = key as String case .AppiraterMigrationCompleted: - armchairKeyAppiraterMigrationCompleted = key + armchairKeyAppiraterMigrationCompleted = key as String case .UAAppReviewManagerMigrationCompleted: - armchairKeyUAAppReviewManagerMigrationCompleted = key + armchairKeyUAAppReviewManagerMigrationCompleted = key as String } } @@ -1465,7 +1466,7 @@ public class Manager : ArmchairManager { private func migrateAppiraterKeysIfNecessary() { let appiraterAlreadyCompletedKey: NSString = keyForArmchairKeyType(.AppiraterMigrationCompleted) - var appiraterMigrationAlreadyCompleted = userDefaultsObject?.boolForKey(appiraterAlreadyCompletedKey) + var appiraterMigrationAlreadyCompleted = userDefaultsObject?.boolForKey(appiraterAlreadyCompletedKey as String) if let completed = appiraterMigrationAlreadyCompleted { if completed { @@ -1490,14 +1491,14 @@ public class Manager : ArmchairManager { } } - userDefaultsObject?.setObject(NSNumber(bool: true), forKey: appiraterAlreadyCompletedKey) + userDefaultsObject?.setObject(NSNumber(bool: true), forKey: appiraterAlreadyCompletedKey as String) userDefaultsObject?.synchronize() } // This only supports the default UAAppReviewManager keys. If you customized them, you will have to manually migrate your values over. private func migrateUAAppReviewManagerKeysIfNecessary() { let appReviewManagerAlreadyCompletedKey: NSString = keyForArmchairKeyType(.UAAppReviewManagerMigrationCompleted) - var appReviewManagerMigrationAlreadyCompleted = userDefaultsObject?.boolForKey(appReviewManagerAlreadyCompletedKey) + var appReviewManagerMigrationAlreadyCompleted = userDefaultsObject?.boolForKey(appReviewManagerAlreadyCompletedKey as String) if let completed = appReviewManagerMigrationAlreadyCompleted { if completed { @@ -1525,7 +1526,7 @@ public class Manager : ArmchairManager { } } - userDefaultsObject?.setObject(NSNumber(bool: true), forKey: appReviewManagerAlreadyCompletedKey) + userDefaultsObject?.setObject(NSNumber(bool: true), forKey: appReviewManagerAlreadyCompletedKey as String) userDefaultsObject?.synchronize() } From f4d18b4a803f686beb4b4966cd9de346ce42f82e Mon Sep 17 00:00:00 2001 From: Nick O'Neill Date: Fri, 10 Apr 2015 15:44:37 -0700 Subject: [PATCH 2/2] Updated examples. --- Example/ViewController.swift | 6 +++--- Source/Armchair.swift | 2 +- iOS Example.xcodeproj/project.pbxproj | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Example/ViewController.swift b/Example/ViewController.swift index c48555b..b1f7e34 100644 --- a/Example/ViewController.swift +++ b/Example/ViewController.swift @@ -55,12 +55,12 @@ extension ViewController { // Only set it if we are using Armchair localizations if !Armchair.useMainAppBundleForLocalizations() { - var currentLocalization: NSString = NSBundle.mainBundle().preferredLocalizations[0] as NSString + var currentLocalization: NSString = NSBundle.mainBundle().preferredLocalizations[0] as! NSString // Only set it if we are using a different language than this apps development language if let developmentLocalization = NSBundle.mainBundle().developmentLocalization { if currentLocalization != developmentLocalization { - languageLabelText = currentLocalization - if let displayName = NSLocale(localeIdentifier: currentLocalization).displayNameForKey(NSLocaleIdentifier, value:currentLocalization) { + languageLabelText = currentLocalization as String + if let displayName = NSLocale(localeIdentifier: currentLocalization as String).displayNameForKey(NSLocaleIdentifier, value:currentLocalization) { languageLabelText = "\(displayName): \(currentLocalization)" } } diff --git a/Source/Armchair.swift b/Source/Armchair.swift index b61c3c4..c91cd68 100644 --- a/Source/Armchair.swift +++ b/Source/Armchair.swift @@ -27,7 +27,7 @@ import SystemConfiguration #if os(iOS) import UIKit #elseif os(OSX) -import Appkit +import AppKit #else // Not yet supported #endif diff --git a/iOS Example.xcodeproj/project.pbxproj b/iOS Example.xcodeproj/project.pbxproj index b5f82cf..169a99a 100644 --- a/iOS Example.xcodeproj/project.pbxproj +++ b/iOS Example.xcodeproj/project.pbxproj @@ -421,7 +421,7 @@ EMBEDDED_CONTENT_CONTAINS_SWIFT = YES; GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)"; INFOPLIST_FILE = "$(SRCROOT)/Example/Info-iOS.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; OTHER_SWIFT_FLAGS = ""; PRODUCT_NAME = "iOS Example"; @@ -438,7 +438,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; EMBEDDED_CONTENT_CONTAINS_SWIFT = YES; INFOPLIST_FILE = "$(SRCROOT)/Example/Info-iOS.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_NAME = "iOS Example"; PROVISIONING_PROFILE = "";