에 그 클래스를 사용할 수있는 파일에 헤더 파일을 브리징 만들어야합니다 마침내 내 장치에서 뭔가를 실행했습니다. 여기에 내 설정입니다. swiftlib라는 Swift Framework를 만들었습니다. "MyClass"라는 Objective-C 클래스를 추가했습니다. 기본적으로는 다음과 같습니다
은 그때 나의 새로운 목표 - C 클래스를 가져 오기 위해 "우산 헤더"를 수정했습니다. 우산 머리글은 신속한 라이브러리 프로젝트의 이름입니다. 그래서 제 경우에는 "swiftlib.h"였습니다. 내 우산 헤더 파일에있는 내용은 다음과 같습니다.
헤더 클래스를 public으로 설정하면 컴파일 오류가 발생합니다. 기본적으로 우산 헤더에 포함 된 것은 무엇이든 신속한 프레임 워크 사용자에게 공개되므로 공개해야합니다. 에서 MyClass.h을 선택하고 오른쪽 세부 줄을 열고 여기에 드롭 다운을 선택
내가 다음 테스트에 대한 단일 뷰 응용 프로그램에서이 스위프트 프레임 워크를 사용하고, 내 목표 - C 클래스를 사용 할 수 있었다 AppDelegate.swift과 같이 :
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
}
이 컴파일하고 내 장치에서 실행.
#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
내가 스위프트에 사용할 CommonCrypto을 가져올 그나마 : 그 호기심에 대한
이는 오브젝티브 C MyClass에 대한 구현 코드이었다. 난 단지 Swift Framework에서 Objective-C 클래스를 사용하고 싶다. 코드에서 공통 암호를 제거하고 간단한 예제를 사용할 수 있습니다. – kailoonCommonCrypto에 대한 언급이 삭제되었으므로 예 또는 아니오로 대답하는 것이 훨씬 쉬워졌습니다. – kailoon