Răsfoiți Sursa

Add ObjC bridge

Evgenii Neumerzhitckii 9 ani în urmă
părinte
comite
6764f9f98e
2 a modificat fișierele cu 83 adăugiri și 0 ștergeri
  1. 79 0
      Demo/KeychainSwiftCBridge.swift
  2. 4 0
      KeychainSwift.xcodeproj/project.pbxproj

+ 79 - 0
Demo/KeychainSwiftCBridge.swift

@@ -0,0 +1,79 @@
+/**
+ 
+ This file can be used in your ObjC project if you want to use KeychainSwift Swift library.
+ Extend this file to add other functionality for your app.
+ 
+ How to use
+ ----------
+ 
+ 1. Import swift code in your ObjC file:
+ 
+ #import "YOUR_PRODUCT_MODULE_NAME-Swift.h"
+ 
+ 2. Use KeychainSwift in your ObjC code:
+ 
+ - (void)viewDidLoad {
+ [super viewDidLoad];
+ 
+ KeychainSwiftCBridge *keychain = [[KeychainSwiftCBridge alloc] init];
+ [keychain set:@"Hello World" forKey:@"my key"];
+ NSString *value = [keychain get:@"my key"];
+ 
+ */
+@objc public class KeychainSwiftCBridge: NSObject {
+  let keychain = KeychainSwift()
+  
+  open var lastResultCode: OSStatus {
+    get { return keychain.lastResultCode }
+  }
+  
+  open var accessGroup: String? {
+    set { keychain.accessGroup = newValue }
+    get { return keychain.accessGroup }
+  }
+  
+  open var synchronizable: Bool {
+    set { keychain.synchronizable = newValue }
+    get { return keychain.synchronizable }
+  }
+  
+  
+  @discardableResult
+  open func set(_ value: String, forKey key: String) -> Bool {
+    return keychain.set(value, forKey: key)
+  }
+  
+  @discardableResult
+  open func setData(_ value: Data, forKey key: String) -> Bool {
+    
+    return keychain.set(value, forKey: key)
+  }
+  
+  @discardableResult
+  open func setBool(_ value: Bool, forKey key: String) -> Bool {
+    
+    return keychain.set(value, forKey: key)
+  }
+  
+  open func get(_ key: String) -> String? {
+    return keychain.get(key)
+  }
+  
+  open func getData(_ key: String) -> Data? {
+    return keychain.getData(key)
+  }
+  
+  open func getBool(_ key: String) -> Bool? {
+    return keychain.getBool(key)
+  }
+  
+  @discardableResult
+  open func delete(_ key: String) -> Bool {
+    return keychain.delete(key);
+  }
+  
+  @discardableResult
+  open func clear() -> Bool {
+    return keychain.clear()
+  }
+}

+ 4 - 0
KeychainSwift.xcodeproj/project.pbxproj

@@ -50,6 +50,7 @@
 		7ED6C9AC1B1C133500FE8090 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7ED6C9AA1B1C133500FE8090 /* LaunchScreen.xib */; };
 		7ED6C9BF1B1C13AA00FE8090 /* KeychainSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7ED6C96C1B1C118F00FE8090 /* KeychainSwift.framework */; };
 		7ED6C9C01B1C13AA00FE8090 /* KeychainSwift.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 7ED6C96C1B1C118F00FE8090 /* KeychainSwift.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+		7EE5B9A11E32F6D400AA56FF /* KeychainSwiftCBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7EE5B9A01E32F6D400AA56FF /* KeychainSwiftCBridge.swift */; };
 /* End PBXBuildFile section */
 
 /* Begin PBXContainerItemProxy section */
@@ -139,6 +140,7 @@
 		7ED6C9AB1B1C133500FE8090 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = "<group>"; };
 		7ED6C9C61B1C16BC00FE8090 /* concatenate_swift_files.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = concatenate_swift_files.sh; sourceTree = "<group>"; };
 		7ED6C9C91B1C16EE00FE8090 /* KeychainSwiftDistrib.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeychainSwiftDistrib.swift; sourceTree = "<group>"; };
+		7EE5B9A01E32F6D400AA56FF /* KeychainSwiftCBridge.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeychainSwiftCBridge.swift; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
@@ -311,6 +313,7 @@
 			children = (
 				7ED6C9A11B1C133500FE8090 /* AppDelegate.swift */,
 				7ED6C9A31B1C133500FE8090 /* ViewController.swift */,
+				7EE5B9A01E32F6D400AA56FF /* KeychainSwiftCBridge.swift */,
 				7ED6C9A51B1C133500FE8090 /* Main.storyboard */,
 				7ED6C9A81B1C133500FE8090 /* Images.xcassets */,
 				7ED6C9AA1B1C133500FE8090 /* LaunchScreen.xib */,
@@ -765,6 +768,7 @@
 			buildActionMask = 2147483647;
 			files = (
 				7ED6C9A41B1C133500FE8090 /* ViewController.swift in Sources */,
+				7EE5B9A11E32F6D400AA56FF /* KeychainSwiftCBridge.swift in Sources */,
 				7ED6C9A21B1C133500FE8090 /* AppDelegate.swift in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;