Единственный ответ, который я нашел, был в этом , и я не удовлетворен им.
Я добавляю стандартный конвертер MD5 в качестве расширения строки:
/* ###################################################################################################################################### */
/**
From here: https://stackoverflow.com/q/24123518/879365
I am not making this public, because it requires the common crypto in the bridging header.
*/
fileprivate extension String {
/* ################################################################## */
/**
- returns: the String, as an MD5 hash.
*/
var md5: String {
let str = self.cString(using: String.Encoding.utf8)
let strLen = CUnsignedInt(self.lengthOfBytes(using: String.Encoding.utf8))
let digestLen = Int(CC_MD5_DIGEST_LENGTH)
let result = UnsafeMutablePointer<CUnsignedChar>.allocate(capacity: digestLen)
CC_MD5(str!, strLen, result)
let hash = NSMutableString()
for i in 0..<digestLen {
hash.appendFormat("%02x", result[i])
}
result.deallocate()
return hash as String
}
}
Требуется добавить в заголовок моста следующее:
#import <CommonCrypto/CommonCrypto.h>
Поскольку я хотел бы добавить это к набору инструментов многократного использования, я хотел бы посмотреть, есть ли способ во время компиляции определить, использовалась ли общая криптографическая библиотека.
Есть ли способ для меня, чтобы установить это как условную компиляцию?
Это не имеет большого значения, если нет; просто означает, что мне нужно настроить это как отдельный исходный файл.