Browse Source

Merge branch 'Tulleb-master'

Evgenii Neumerzhitckii 9 years ago
parent
commit
c3dcba307f

+ 4 - 0
CHANGELOG.md

@@ -1,5 +1,9 @@
 # KeychainSwift version history
 
+## 6.0.0 (2016-08-20)
+
+Update to Xcode 8 beta 6 (thanks, [Tulleb](https://github.com/Tulleb)).
+
 ## 5.0.0 (2016-08-13)
 
 Update to Xcode 8 beta 4/5.

+ 1 - 1
Demo/AppDelegate.swift

@@ -7,7 +7,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
   var window: UIWindow?
 
 
-  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
+  private func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
     // Override point for customization after application launch.
     return true
   }

+ 11 - 11
Distrib/KeychainSwiftDistrib.swift

@@ -23,7 +23,7 @@ A collection of helper functions for saving text and data in the keychain.
 */
 public class KeychainSwift {
   
-  var lastQueryParameters: [String: NSObject]? // Used by the unit tests
+  var lastQueryParameters: [String: Any]? // Used by the unit tests
   
   /// Contains result code from the last operation. Value is noErr (0) for a successful result.
   public var lastResultCode: OSStatus = noErr
@@ -103,7 +103,7 @@ public class KeychainSwift {
       
     let prefixedKey = keyWithPrefix(key)
       
-    var query: [String : NSObject] = [
+    var query: [String : Any] = [
       KeychainSwiftConstants.klass       : kSecClassGenericPassword,
       KeychainSwiftConstants.attrAccount : prefixedKey,
       KeychainSwiftConstants.valueData   : value,
@@ -172,7 +172,7 @@ public class KeychainSwift {
   public func getData(_ key: String) -> Data? {
     let prefixedKey = keyWithPrefix(key)
     
-    var query: [String: NSObject] = [
+    var query: [String: Any] = [
       KeychainSwiftConstants.klass       : kSecClassGenericPassword,
       KeychainSwiftConstants.attrAccount : prefixedKey,
       KeychainSwiftConstants.returnData  : kCFBooleanTrue,
@@ -185,8 +185,8 @@ public class KeychainSwift {
     
     var result: AnyObject?
     
-    lastResultCode = withUnsafeMutablePointer(&result) {
-      SecItemCopyMatching(query, UnsafeMutablePointer($0))
+    lastResultCode = withUnsafeMutablePointer(to: &result) {
+      SecItemCopyMatching(query as CFDictionary, UnsafeMutablePointer($0))
     }
     
     if lastResultCode == noErr { return result as? Data }
@@ -220,7 +220,7 @@ public class KeychainSwift {
   public func delete(_ key: String) -> Bool {
     let prefixedKey = keyWithPrefix(key)
 
-    var query: [String: NSObject] = [
+    var query: [String: Any] = [
       KeychainSwiftConstants.klass       : kSecClassGenericPassword,
       KeychainSwiftConstants.attrAccount : prefixedKey
     ]
@@ -243,7 +243,7 @@ public class KeychainSwift {
   */
   @discardableResult
   public func clear() -> Bool {
-    var query: [String: NSObject] = [ kSecClass as String : kSecClassGenericPassword ]
+    var query: [String: Any] = [ kSecClass as String : kSecClassGenericPassword ]
     query = addAccessGroupWhenPresent(query)
     query = addSynchronizableIfRequired(query, addingItems: false)
     lastQueryParameters = query
@@ -258,10 +258,10 @@ public class KeychainSwift {
     return "\(keyPrefix)\(key)"
   }
   
-  func addAccessGroupWhenPresent(_ items: [String: NSObject]) -> [String: NSObject] {
+  func addAccessGroupWhenPresent(_ items: [String: Any]) -> [String: Any] {
     guard let accessGroup = accessGroup else { return items }
     
-    var result: [String: NSObject] = items
+    var result: [String: Any] = items
     result[KeychainSwiftConstants.accessGroup] = accessGroup
     return result
   }
@@ -276,9 +276,9 @@ public class KeychainSwift {
    - returns: the dictionary with kSecAttrSynchronizable item added if it was requested. Otherwise, it returns the original dictionary.
  
   */
-  func addSynchronizableIfRequired(_ items: [String: NSObject], addingItems: Bool) -> [String: NSObject] {
+  func addSynchronizableIfRequired(_ items: [String: Any], addingItems: Bool) -> [String: Any] {
     if !synchronizable { return items }
-    var result: [String: NSObject] = items
+    var result: [String: Any] = items
     result[KeychainSwiftConstants.attrSynchronizable] = addingItems == true ? true : kSecAttrSynchronizableAny
     return result
   }

+ 1 - 1
KeychainSwift.podspec

@@ -1,6 +1,6 @@
 Pod::Spec.new do |s|
   s.name        = "KeychainSwift"
-  s.version     = "5.0.0"
+  s.version     = "6.0.0"
   s.license     = { :type => "MIT" }
   s.homepage    = "https://github.com/marketplacer/keychain-swift"
   s.summary     = "A library for saving text and data in the Keychain with Swift."

+ 11 - 11
KeychainSwift/KeychainSwift.swift

@@ -8,7 +8,7 @@ A collection of helper functions for saving text and data in the keychain.
 */
 public class KeychainSwift {
   
-  var lastQueryParameters: [String: NSObject]? // Used by the unit tests
+  var lastQueryParameters: [String: Any]? // Used by the unit tests
   
   /// Contains result code from the last operation. Value is noErr (0) for a successful result.
   public var lastResultCode: OSStatus = noErr
@@ -88,7 +88,7 @@ public class KeychainSwift {
       
     let prefixedKey = keyWithPrefix(key)
       
-    var query: [String : NSObject] = [
+    var query: [String : Any] = [
       KeychainSwiftConstants.klass       : kSecClassGenericPassword,
       KeychainSwiftConstants.attrAccount : prefixedKey,
       KeychainSwiftConstants.valueData   : value,
@@ -157,7 +157,7 @@ public class KeychainSwift {
   public func getData(_ key: String) -> Data? {
     let prefixedKey = keyWithPrefix(key)
     
-    var query: [String: NSObject] = [
+    var query: [String: Any] = [
       KeychainSwiftConstants.klass       : kSecClassGenericPassword,
       KeychainSwiftConstants.attrAccount : prefixedKey,
       KeychainSwiftConstants.returnData  : kCFBooleanTrue,
@@ -170,8 +170,8 @@ public class KeychainSwift {
     
     var result: AnyObject?
     
-    lastResultCode = withUnsafeMutablePointer(&result) {
-      SecItemCopyMatching(query, UnsafeMutablePointer($0))
+    lastResultCode = withUnsafeMutablePointer(to: &result) {
+      SecItemCopyMatching(query as CFDictionary, UnsafeMutablePointer($0))
     }
     
     if lastResultCode == noErr { return result as? Data }
@@ -205,7 +205,7 @@ public class KeychainSwift {
   public func delete(_ key: String) -> Bool {
     let prefixedKey = keyWithPrefix(key)
 
-    var query: [String: NSObject] = [
+    var query: [String: Any] = [
       KeychainSwiftConstants.klass       : kSecClassGenericPassword,
       KeychainSwiftConstants.attrAccount : prefixedKey
     ]
@@ -228,7 +228,7 @@ public class KeychainSwift {
   */
   @discardableResult
   public func clear() -> Bool {
-    var query: [String: NSObject] = [ kSecClass as String : kSecClassGenericPassword ]
+    var query: [String: Any] = [ kSecClass as String : kSecClassGenericPassword ]
     query = addAccessGroupWhenPresent(query)
     query = addSynchronizableIfRequired(query, addingItems: false)
     lastQueryParameters = query
@@ -243,10 +243,10 @@ public class KeychainSwift {
     return "\(keyPrefix)\(key)"
   }
   
-  func addAccessGroupWhenPresent(_ items: [String: NSObject]) -> [String: NSObject] {
+  func addAccessGroupWhenPresent(_ items: [String: Any]) -> [String: Any] {
     guard let accessGroup = accessGroup else { return items }
     
-    var result: [String: NSObject] = items
+    var result: [String: Any] = items
     result[KeychainSwiftConstants.accessGroup] = accessGroup
     return result
   }
@@ -261,9 +261,9 @@ public class KeychainSwift {
    - returns: the dictionary with kSecAttrSynchronizable item added if it was requested. Otherwise, it returns the original dictionary.
  
   */
-  func addSynchronizableIfRequired(_ items: [String: NSObject], addingItems: Bool) -> [String: NSObject] {
+  func addSynchronizableIfRequired(_ items: [String: Any], addingItems: Bool) -> [String: Any] {
     if !synchronizable { return items }
-    var result: [String: NSObject] = items
+    var result: [String: Any] = items
     result[KeychainSwiftConstants.attrSynchronizable] = addingItems == true ? true : kSecAttrSynchronizableAny
     return result
   }

+ 9 - 9
KeychainSwiftTests/AccessGroupTests.swift

@@ -16,7 +16,7 @@ class AccessGroupTests: XCTestCase {
   // MARK: - Add access group
   
   func testAddAccessGroup() {
-    let items: [String: NSObject] = [
+    let items: [String: Any] = [
       "one": "two"
     ]
     
@@ -24,42 +24,42 @@ class AccessGroupTests: XCTestCase {
     let result = obj.addAccessGroupWhenPresent(items)
     
     XCTAssertEqual(2, result.count)
-    XCTAssertEqual("two", result["one"])
-    XCTAssertEqual("123.my.test.group", result["agrp"])
+    XCTAssertEqual("two", result["one"] as! String)
+    XCTAssertEqual("123.my.test.group", result["agrp"] as! String)
   }
   
   func testAddAccessGroup_nil() {
-    let items: [String: NSObject] = [
+    let items: [String: Any] = [
       "one": "two"
     ]
     
     let result = obj.addAccessGroupWhenPresent(items)
     
     XCTAssertEqual(1, result.count)
-    XCTAssertEqual("two", result["one"])
+    XCTAssertEqual("two", result["one"] as! String)
   }
   
   func testSet() {
     obj.accessGroup = "123.my.test.group"
     obj.set("hello :)", forKey: "key 1")
-    XCTAssertEqual("123.my.test.group", obj.lastQueryParameters?["agrp"])
+    XCTAssertEqual("123.my.test.group", obj.lastQueryParameters?["agrp"] as! String)
   }
   
   func testGet() {
     obj.accessGroup = "123.my.test.group"
     _ = obj.get("key 1")
-    XCTAssertEqual("123.my.test.group", obj.lastQueryParameters?["agrp"])
+    XCTAssertEqual("123.my.test.group", obj.lastQueryParameters?["agrp"] as! String)
   }
   
   func testDelete() {
     obj.accessGroup = "123.my.test.group"
     obj.delete("key 1")
-    XCTAssertEqual("123.my.test.group", obj.lastQueryParameters?["agrp"])
+    XCTAssertEqual("123.my.test.group", obj.lastQueryParameters?["agrp"] as! String)
   }
   
   func testClear() {
     obj.accessGroup = "123.my.test.group"
     obj.clear()
-    XCTAssertEqual("123.my.test.group", obj.lastQueryParameters?["agrp"])
+    XCTAssertEqual("123.my.test.group", obj.lastQueryParameters?["agrp"] as! String)
   }
 }

+ 12 - 12
KeychainSwiftTests/SynchronizableTests.swift

@@ -16,7 +16,7 @@ class SynchronizableTests: XCTestCase {
   // MARK: - addSynchronizableIfRequired
   
   func testAddSynchronizableGroup_addItemsFalse() {
-    let items: [String: NSObject] = [
+    let items: [String: Any] = [
       "one": "two"
     ]
     
@@ -24,12 +24,12 @@ class SynchronizableTests: XCTestCase {
     let result = obj.addSynchronizableIfRequired(items, addingItems: false)
     
     XCTAssertEqual(2, result.count)
-    XCTAssertEqual("two", result["one"])
-    XCTAssertEqual(kSecAttrSynchronizableAny, result["sync"])
+    XCTAssertEqual("two", result["one"] as! String)
+    XCTAssertEqual(kSecAttrSynchronizableAny as String, result["sync"] as! String)
   }
   
   func testAddSynchronizableGroup_addItemsTrue() {
-    let items: [String: NSObject] = [
+    let items: [String: Any] = [
       "one": "two"
     ]
     
@@ -37,19 +37,19 @@ class SynchronizableTests: XCTestCase {
     let result = obj.addSynchronizableIfRequired(items, addingItems: true)
     
     XCTAssertEqual(2, result.count)
-    XCTAssertEqual("two", result["one"])
-    XCTAssertEqual(true, result["sync"])
+    XCTAssertEqual("two", result["one"] as! String)
+    XCTAssertEqual(true, result["sync"] as! Bool)
   }
   
   func testAddSynchronizableGroup_nil() {
-    let items: [String: NSObject] = [
+    let items: [String: Any] = [
       "one": "two"
     ]
     
     let result = obj.addSynchronizableIfRequired(items, addingItems: false)
     
     XCTAssertEqual(1, result.count)
-    XCTAssertEqual("two", result["one"])
+    XCTAssertEqual("two", result["one"] as! String!)
   }
   
   // MARK: - Set
@@ -57,7 +57,7 @@ class SynchronizableTests: XCTestCase {
   func testSet() {
     obj.synchronizable = true
     obj.set("hello :)", forKey: "key 1")
-    XCTAssertEqual(true, obj.lastQueryParameters?["sync"])
+    XCTAssertEqual(true, obj.lastQueryParameters?["sync"] as! Bool)
   }
   
   func testSet_doNotSetSynchronizable() {
@@ -70,7 +70,7 @@ class SynchronizableTests: XCTestCase {
   func testGet() {
     obj.synchronizable = true
     _ = obj.get("key 1")
-    XCTAssertEqual(kSecAttrSynchronizableAny, obj.lastQueryParameters?["sync"])
+    XCTAssertEqual(kSecAttrSynchronizableAny as String, obj.lastQueryParameters?["sync"] as! String)
   }
   
   func testGet_doNotSetSynchronizable() {
@@ -83,7 +83,7 @@ class SynchronizableTests: XCTestCase {
   func testDelete() {
     obj.synchronizable = true
     obj.delete("key 1")
-    XCTAssertEqual(kSecAttrSynchronizableAny, obj.lastQueryParameters?["sync"])
+    XCTAssertEqual(kSecAttrSynchronizableAny as String, obj.lastQueryParameters?["sync"] as! String)
   }
   
   func testDelete_doNotSetSynchronizable() {
@@ -96,7 +96,7 @@ class SynchronizableTests: XCTestCase {
   func testClear() {
     obj.synchronizable = true
     obj.clear()
-    XCTAssertEqual(kSecAttrSynchronizableAny, obj.lastQueryParameters?["sync"])
+    XCTAssertEqual(kSecAttrSynchronizableAny as String, obj.lastQueryParameters?["sync"] as! String)
   }
   
   func testClear_doNotSetSynchronizable() {

+ 2 - 2
README.md

@@ -40,7 +40,7 @@ Simply add [KeychainSwiftDistrib.swift](https://github.com/marketplacer/keychain
 
 #### Setup with Carthage (iOS 8+)
 
-Alternatively, add `github "marketplacer/keychain-swift" ~> 5.0` to your Cartfile and run `carthage update`.
+Alternatively, add `github "marketplacer/keychain-swift" ~> 6.0` to your Cartfile and run `carthage update`.
 
 #### Setup with CocoaPods (iOS 8+)
 
@@ -48,7 +48,7 @@ If you are using CocoaPods add this text to your Podfile and run `pod install`.
 
     use_frameworks!
     target 'Your target name'
-    pod 'KeychainSwift', git: 'https://github.com/marketplacer/keychain-swift.git', tag: '5.0.0'
+    pod 'KeychainSwift', git: 'https://github.com/marketplacer/keychain-swift.git', tag: '6.0.0'
 
 
 ## Legacy Swift versions

+ 6 - 6
macOS Demo/ViewController.swift

@@ -29,12 +29,12 @@ class ViewController: NSViewController {
     updateValueLabel()
     errorLabel.stringValue = ""
   }
-
-  override var representedObject: AnyObject? {
-    didSet {
-    // Update the view, if already loaded.
-    }
-  }
+	
+//  override var representedObject: Any? {
+//    didSet {
+//    // Update the view, if already loaded.
+//    }
+//  }
 
   @IBAction func onSaveTapped(_ sender: AnyObject) {
     keychain.synchronizable = synchronizableButton.state == NSOnState