[绍棠_Swift] 怎样在Swift项目中引入CommonCrypto库
程序员文章站
2024-03-22 23:01:22
...
方法一:
借助modulemap
1.创建modulemap文件
module CCommonCrypto [system] {
header "/Applications/Xcode.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/usr/include/CommonCrypto/CommonCrypto.h"
export *
}
module CCommonCrypto [system] {
header "/Applications/Xcode.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/SDKs/AppleTVSimulator.sdk/usr/include/CommonCrypto/CommonCrypto.h"
export *
}
module CCommonCrypto [system] {
header "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/CommonCrypto/CommonCrypto.h"
export *
}
module CCommonCrypto [system] {
header "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include/CommonCrypto/CommonCrypto.h"
export *
}
module CCommonCrypto [system] {
header "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/CommonCrypto/CommonCrypto.h"
export *
}
module CCommonCrypto [system] {
header "/Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/usr/include/CommonCrypto/CommonCrypto.h"
export *
}
module CCommonCrypto [system] {
header "/Applications/Xcode.app/Contents/Developer/Platforms/WatchSimulator.platform/Developer/SDKs/WatchSimulator.sdk/usr/include/CommonCrypto/CommonCrypto.h"
export *
}
2.将modulemap路径添加到Import Paths
3.导入头文件使用
利用Swift与OC的桥接文件
任意新建一个类,语言选取objective-c,
这个步骤仅仅是为了生成我们需要的一个文件;之后我们将删除本步骤中建好的类,所以类名什么的随便起好了
任意写入类名,next之后,我们会得到一条提示,提示我们是否要建立这个bridging-header文件,我们选择是,就可以看到目录中多出来这样一个xxx-bridging-header.h的文件,
然后移除这个文件中的所有内容,并且移除我们之前步骤中生成的objc的.h和.m两个文件(当然如果有用你可以保留下来)。
3. 接下来,在xxx-bridging-header.h 中import进入我们想要的各种文件。
在我的实例项目*import了两个,第一行是为了写MD5算法,第二行是为了调用第三方的类库,MBProgressHUD
MD5算法
我们需要import <CommonCrypto/CommonDigest.h>
之后,在你的任意一个.swift文件中,写入下面的代码
- extension String{
- func md5() ->String!{
- let str = self.cStringUsingEncoding(NSUTF8StringEncoding)
- let strLen = CUnsignedInt(self.lengthOfBytesUsingEncoding(NSUTF8StringEncoding))
- let digestLen = Int(CC_MD5_DIGEST_LENGTH)
- let result = UnsafeMutablePointer<CUnsignedChar>.alloc(digestLen)
- CC_MD5(str!, strLen, result)
- var hash = NSMutableString()
- for i in 0 ..< digestLen {
- hash.appendFormat("%02x", result[i])
- }
- result.destroy()
- return String(format: hash as String)
- }
- }