verwenden Also das dauerte eine Weile, aber ich habe endlich etwas auf meinem Gerät laufen lassen. Hier ist mein Setup. Ich habe ein Swift-Framework namens wiftlib erstellt. Ich habe eine Objective-C-Klasse namens "MyClass" hinzugefügt. Grundsätzlich sieht es wie folgt aus:

ich dann den „Regenschirm-Header“ modifizierte meine neue Objective-C-Klasse zu importieren. Der Schirmtitel ist der Name Ihres schnellen Bibliotheksprojekts. Also in meinem Fall war es "swiftlib.h". Dies ist, was in meiner Regenschirm-Header-Datei ist:
Stellen Sie sicher, Ihre Header-Klasse zu veröffentlichen, oder Sie erhalten einen Kompilierungsfehler. Grundsätzlich ist alles, was in der Schirmüberschrift enthalten ist, Benutzern Ihres schnellen Frameworks zugänglich, so dass es öffentlich sein muss. Wählen Sie MyClass.h und öffnen Sie die richtigen Details Leiste und wählen Sie die Drop-down hier:

habe ich dann diesen Swift Rahmen in einer einzigen Ansicht Anwendung zum Testen und konnte meine Objective-C-Klasse in der Verwendung AppDelegate.swift wie folgt:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
let test = MyClass.myMethod()
print("test = " + String(test))
return true
}
Dies kompiliert und auf meinem Gerät ausgeführt.
Für diejenigen neugierig, war dies die Umsetzung Code für den Objective-C MyClass:
#import "MyClass.h"
#import <CommonCrypto/CommonCrypto.h>
@implementation MyClass
+ (NSString *)myMethod {
NSString *key = @"test";
NSString *data = @"mytestdata";
const char *ckey = [key cStringUsingEncoding:NSASCIIStringEncoding];
const char *cdata = [data cStringUsingEncoding:NSASCIIStringEncoding];
unsigned char chmac[CC_SHA256_DIGEST_LENGTH];
CCHmac(kCCHmacAlgSHA256, ckey, strlen(ckey), cdata, strlen(cdata), chmac);
NSData *hmac = [[NSData alloc] initWithBytes:chmac length:sizeof(chmac)];
NSString *hash = [hmac base64Encoding];
return hash;
}
@end
Ich mag nicht CommonCrypto importieren in Swift zu verwenden. Ich möchte nur eine Objective-C-Klasse in einem Swift-Framework verwenden. Ich kann die allgemeine Verschlüsselung im Code entfernen und ein einfacheres Beispiel verwenden. – kailoon
Keine Erwähnung von CommonCrypto entfernt, daher sollte dies viel einfacher mit Ja oder Nein zu beantworten sein. – kailoon