iOS swift NSMutableData没有成员appendString

你好,我是新来的迅速,我正在跟随一个教程,并创build相同的代码,以上传一个图像。 我现在使用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,因为我得到的错误:

NSMutableDatatypes的值没有成员appendString

我一直在寻找解决办法,但没有find任何和我有append方法可用,但它不需要一个string。

正如@dan在评论中指出的那样,这个方法是你正在看的教程的一部分。 虽然在Swift中定义自定义方法已经很简单了。

首先,不要使用NSMutableData ; 相反,使用新的Data结构,这将是可变的或不可变的取决于你使用var还是let

 var body = Data() 

然后添加UTF-8字节:

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

(如果你需要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") 

我不会推荐这个代码,但有两个原因。 首先,有损转换意味着您的应用可能会默默丢弃重要数据。 其次,解压( data!而不是data )意味着如果编码有问题,你的应用程序将会崩溃,而不是显示一个有用的错误。

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

这工作与我斯威夫特3