在 swift 中将 nsdata 转换为字符串

convert a nsdata into string in swift

我想将我在 CoreData 中保存的图像转换为字符串以便我可以使用它(我不想将它直接转换为图像,因为我也需要将 image/string 发送到下一页).

这是我正在尝试的代码,但在 运行 时间内得到 BAD_EXC_Result,因为它找到 nil 值但 tableImageArray[indexPath.row] 具有我将其传递给 if 语句时的值:

if tableImageArray[indexPath.row] != "" {                
    var  _Image:String = String(data: tableImageArray[indexPath.row], encoding:NSUTF8StringEncoding)!   
    //(NSString(data:tableImageArray[indexPath.row], encoding:NSUTF8StringEncoding)) as String!
    print(_Image)
}

尝试:

if let array = tableImageArray {                
    var  _Image:String = String(data: array[indexPath.row], encoding:NSUTF8StringEncoding)!   
    //(NSString(data:array[indexPath.row], encoding:NSUTF8StringEncoding)) as String!
    print(_Image)         
}

您无法通过 UTF8 编码将图像数据直接转换为 String

方式将NSData转换成String不管内容是base64编码。

let imageData = tableImageArray[indexPath.row]
let image = imageData.base64EncodedStringWithOptions([])

这只是我的猜测。

从数组的名称来看,tableImageArray听起来像是图像数组,而不是字符串。所以我猜你正在尝试将图像转换为 NSData,并将 NSData 转换为字符串。

但是,这不起作用。就像直接从 UIImage 转换为 String 是行不通的。

我猜你有以下任一意图:

1) 你想将图片进行base64编码为字符串。为此,您只需对数据调用 base64EncodedStringWithOptions([])

2) 你要识别并打印包含在UIImage中的字符串。为此,您可能应该使用一些 OCR 库。只有 Google 他们!