Da Swift standardmäßig keine MD5-Funktion anbietet, muss man sich mit einem kleinen Trick in Form einer Extension weiterhelfen:
// Create a MD5 out of a String extension String { var md5: String! { let str = self.cStringUsingEncoding(NSUTF8StringEncoding) let strLen = CC_LONG(self.lengthOfBytesUsingEncoding(NSUTF8StringEncoding)) let digestLen = Int(CC_MD5_DIGEST_LENGTH) let result = UnsafeMutablePointer<CUnsignedChar>.alloc(digestLen) CC_MD5(str!, strLen, result) let hash = NSMutableString() for i in 0..<digestLen { hash.appendFormat("%02x", result[i]) } result.destroy() return String(format: hash as String) } }
Wichtig:
Damit auf Typen wie CC_Long, CC_MD5 etc. zugegriffen werden kann, muss ein Bridging-Header erstellt werden, in dem folgende Codezeile stehen muss:
#import <CommonCrypto/CommonCrypto.h>
Der MD5-Hash kann z.B. verwendet werden, um für die entsprechenden Strings Ids zu vergeben (Objekte, Dictionaries, Arrays, …). Dies bietet sich an, da normale Objekt-Ids auch Slashes enthalten können, was bei Abfragen zu Problemen führen kann.
Aber aufgepasst: Die folgenden beiden Schreibweisen (für die selbe Objekt-Id!) ergeben unterschiedliche MD5-Strings:
let md5_1 = objectID.description.md5
let md5_2 = „\(objectID.description)“.md5