base64EncodedStringWithOptions

base64EncodedStringWithOptions

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.Encoding64CharacterLineLengthNSDataBase64EncodingOptions结构(或一般来说是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/

10-09 08:54