let dataStr = data.base64EncodedStringWithOptions(options: Encoding64CharacterLineLength)
不会与“使用未解析的标识符'Encoding64CharacterLineLength'进行编译”
当我只是将参数更改为零时
let dataStr = data.base64EncodedStringWithOptions(options: 0)
它甚至给出了一个陌生的错误:“无法转换'String!类型的表达式!'键入“String!”。“我找到了一种使用NSData初始化NSString的方法(但是,我仍然无法得到String和NSString之间的区别),但是我很好奇为什么这两行代码不起作用。
最佳答案
除非明确给定外部名称,否则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: [])
关于ios - Swift中的base64EncodedStringWithOptions失败,出现编译错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24769074/