Swift 3:将数据转换为String返回nil值

时间:2016-12-12 23:33:53

标签: swift

将数据转换为String将返回nil值。

代码:

// thus unwraps the image
if let image = image{
        print("Saving image data")

    // don't unwrap here
        if let data = UIImagePNGRepresentation(image){ 
            let str = String(data: data, encoding: .utf8)

            print(str)

        }
    }

我不知道原因。 另外,如何将String转换回Data?

1 个答案:

答案 0 :(得分:3)

这不起作用,因为当您将Image的字节解释为String时,该字符串无效。并非每个混乱的数据都是有效的utf8字符串。即,并非每个n比特(8,有时是16)的集合都是有效的utf8代码点。 Swift String api循环遍历它传递给它的数据对象,以验证它是否是一个有效的字符串。在您的情况下,没有理由认为此数据是有效的字符串,因此它不起作用。

关于utf8的好读物: https://www.objc.io/issues/9-strings/unicode/