Swift中的base64EncodedStringWithOptions失败并出现编译错误
let dataStr = data.base64EncodedStringWithOptions(options: Encoding64CharacterLineLength)
不使用“使用未parsing的标识符Encoding64CharacterLineLength”编译当我只是将参数更改为零
let dataStr = data.base64EncodedStringWithOptions(options: 0)
它给出了更奇怪的错误:“不能转换types'string!'的expression式 键入'string!'“我发现一种方法来初始化NSString NSData(但是,我仍然无法区分string和NSString之间的区别),但我真的很好奇,为什么这两行代码不起作用。
除非明确给出外部名字,否则Swift中的方法的第一个参数不是命名参数。 因此,你应该做的: data.base64EncodedStringWithOptions(x)
没有options:
部分。
如果你真的看到参数types, NSDataBase64EncodingOptions
,你会注意到它是一个符合RawOptionSet
结构的选项常量的静态variables。 因此,使用它们你应该这样做: NSDataBase64EncodingOptions.Encoding64CharacterLineLength
NSDataBase64EncodingOptions
结构(或一般的RawOptionSet
)也不能从整数文字(如0
)转换。 但它符合NilLiteralConvertible
所以如果你不想要任何选项,你可以通过nil
。
把它放在一起:
let dataStr = data.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.Encoding64CharacterLineLength)
要么
let dataStr = data.base64EncodedStringWithOptions(nil)
Swift3.0
let dataStr = data.base64EncodedString(options: [])
对于Swift 2.x,请使用数组作为选项:
let dataStr = data.base64EncodedStringWithOptions([.Encoding64CharacterLineLength]) let dataStr = data.base64EncodedStringWithOptions([])
对于swift 3.0使用这个,
var dataStr = data.base64EncodedString(options: .lineLength64Characters)
Swift 3.x
let fileStream = fileData?.base64EncodedString(options: NSData.Base64EncodingOptions.init(rawValue: 0))
您不必在参数中input“options:”标识符。 您必须指定Encoding64CharacterLineLength是NSDataBase64EncodingOptions的静态成员,如下所示:
var dataStr = data.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.Encoding64CharacterLineLength)
let dataStr = data.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.allZeros)