let dataStr = data.base64EncodedStringWithOptions(options: Encoding64CharacterLineLength)
不能使用“使用未解析的标识符'Encoding64CharacterLineLength'进行编译” 当我用
将参数更改为零时let dataStr = data.base64EncodedStringWithOptions(options: 0)
它给出了更奇怪的错误:“无法转换'String'类型的表达式!键入'String!'“我找到了一种使用NSData初始化NSString的方法(但是,我仍然无法区分String和NSString),但我真的好奇为什么这两行代码不起作用。
答案 0 :(得分:31)
除非明确给出外部名称,否则Swift中方法的第一个参数不是命名参数。因此,你应该这样做:data.base64EncodedStringWithOptions(x)
没有options:
部分。
如果您实际查看参数类型NSDataBase64EncodingOptions
,您会注意到它是一个符合RawOptionSet
的结构,其中包含选项常量的静态变量。因此,要使用它们,您应该: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: [])
答案 1 :(得分:19)
对于Swift 2.x,使用数组作为选项:
let dataStr = data.base64EncodedStringWithOptions([.Encoding64CharacterLineLength])
let dataStr = data.base64EncodedStringWithOptions([])
答案 2 :(得分:5)
对于swift 3.0,请使用
var dataStr = data.base64EncodedString(options: .lineLength64Characters)
答案 3 :(得分:2)
Swift 3.x
let fileStream = fileData?.base64EncodedString(options: NSData.Base64EncodingOptions.init(rawValue: 0))
答案 4 :(得分:0)
您不必在参数中输入“options:”标识符。您必须指定Encoding64CharacterLineLength是NSDataBase64EncodingOptions的静态成员,如下所示:
var dataStr = data.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.Encoding64CharacterLineLength)
答案 5 :(得分:0)
let dataStr = data.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.allZeros)
答案 6 :(得分:0)
由于默认参数值设置为空数组,所以
/// Returns a Base-64 encoded string.
///
/// - parameter options: The options to use for the encoding. Default value is `[]`.
/// - returns: The Base-64 encoded string.
@inlinable public func base64EncodedString(options: Data.Base64EncodingOptions = []) -> String
您只需要致电
let dataStr = data.base64EncodedString()