Rom*_*res 9 nsmutabledata ios swift swift3
您好我是swift的新手,我正在按照教程并创建相同的代码以上传图像.我现在使用swift 3,似乎NSMutableData()不再有appendString方法可用我可以做什么替代?我正在关注的教程是http://swiftdeveloperblog.com/image-upload-example/,我的代码是这个
func createBodyWithParameters(parameters: [String: String]?, filePathKey: String?, imageDataKey: NSData, boundary: String) -> NSData {
let body = NSMutableData()
if parameters != nil {
for (key, value) in parameters! {
body.("--\(boundary)\r\n")
body.appendString("Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n")
body.appendString("\(value)\r\n")
}
}
let filename = "user-profile.jpg"
let mimetype = "image/jpg"
body.appendString(options: <#T##NSData.Base64EncodingOptions#>)("--\(boundary)\r\n")
body.appendString("Content-Disposition: form-data; name=\"\(filePathKey!)\"; filename=\"\(filename)\"\r\n")
body.appendString("Content-Type: \(mimetype)\r\n\r\n")
body.appendString("\r\n")
body.appendString("--\(boundary)--\r\n")
return body
}
Run Code Online (Sandbox Code Playgroud)
问题再次出现在appendString中,因为我收到错误:
NSMutableData类型的值没有成员appendString
我一直在寻找周围的工作,但没有找到任何,我有可用的附加方法,但它不需要字符串.
Pau*_*ell 14
正如@dan在评论中指出的那样,该方法是您正在研究的教程的一部分.不过,在没有定义自定义方法的情况下,Swift很容易.
首先,不要使用NSMutableData; 相反,使用新Data结构,它将是可变的或不可变的,具体取决于您是否使用var或let:
var body = Data()
Run Code Online (Sandbox Code Playgroud)
然后追加UTF-8字节:
body.append(Data("foo".utf8))
Run Code Online (Sandbox Code Playgroud)
(String如果您需要UTF-8以外的其他代码,还有其他编码方法.)
如果你想要教程的确切行为,这里是如何将其方法转换为Swift 3:
extension Data {
mutating func append(string: String) {
let data = string.data(
using: String.Encoding.utf8,
allowLossyConversion: true)
append(data!)
}
}
…
body.append("foo")
Run Code Online (Sandbox Code Playgroud)
但是,我不建议使用此代码,原因有两个.首先,有损转换意味着您的应用可能会默默地丢弃重要数据.其次,强制解包(data!而不是data)表示如果编码出现问题,您的应用程序将崩溃而不是显示有用的错误.
小智 5
extension NSMutableData {
func appendString(_ string: String) {
let data = string.data(using: String.Encoding.utf8, allowLossyConversion: true)
append(data!)
}
}
Run Code Online (Sandbox Code Playgroud)
与我一起工作Swift 3
| 归档时间: |
|
| 查看次数: |
5313 次 |
| 最近记录: |