The data can not be converted directly to a string because many data bytes are not representable as string characters. The obvious choices are encoding to Base64 or hexadecimal. Apple does not supply and conversions to hexadecimal so the best choice seems to be be Base64.
let bytes: [UInt8] = [107, 200, 119, 211, 247, 171, 132, 179, 181, 133, 54, 146, 206, 234, 69, 197]
// Convert to NSData
let data = NSData(bytes: bytes, length: bytes.count)
// Convert to Base64
let base64String = data.base64EncodedStringWithOptions([])
print("base64String: \(base64String)")
Output:
base64String: a8h30/erhLO1hTaSzupFxQ==
The Base64 in most cases needs to be URL encoded due to possibly containing '/' and/or '=' character depending on the portion of the URL string. See this SO answer for URL encoding information.