iOS swift NSMutableData没有成员appendString

您好我是 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
    }

问题再次出现在appendString中,因为我收到错误

NSMutableData类型的值没有成员appendString

我一直在寻找周围的工作,但没有找到任何,我有可用的追加方法,但它不需要一个字符串.

解决方法

正如@dan在评论中指出的那样,该方法是您正在研究的教程的一部分.不过,在Swift中很容易定义自定义方法.

首先,不要使用NSMutableData;相反,使用新的Data结构,根据您是使用var还是let,它将是可变的或不可变的:

var body = Data()

然后追加UTF-8字节:

body.append(Data("foo".utf8))

(如果你需要UTF-8以外的东西,还有其他编码的String方法.)

如果你想要教程的确切行为,这里是如何将其方法转换为Swift 3:

extension Data {
  mutating func append(string: String) {
    let data = string.data(
        using: String.Encoding.utf8,allowLossyConversion: true)
    append(data!)
  }
}

…

body.append("foo")

但是,我不建议使用此代码,原因有两个.首先,有损转换意味着您的应用可能会默默地丢弃重要数据.其次,强制解包(数据!而不是数据)意味着如果编码出现问题,您的应用程序将崩溃而不是显示有用的错误.

相关文章

背景 前端时间产品经理决定使用百度统计,使得 工程B 中原统计sdk-友盟统计,需要被去除。之前尝试去除...
结论: alloc负责分配内存和创建对象对应的isa指针; init只是返回alloc生成的对象。 所以alloc后,多次...
更新 如果UI愿意把启动图切割成n份,按一定约束在launchscreen.storyboard中进行排版,启动图效果会更好...
最近在看一本书《Effective OC 2.0》,今天看到有个tip是OC适中循环各自优劣性,作者最终推荐此块循环。...
// // ViewController.m // paintCodeTestOC //gif // Created by LongMa on 2019/7/25. // #import &a...
背景介绍 一般情况下,出于省电、权限、合理性等因素考虑,给人的感觉是很多奇怪的需求安卓可以实现,但...