2017-02-21 6 views
0

に文字列を変換:変数の型ののiOS:スウィフト3へスウィフト2:スウィフト2からスウィフト3にコードのその平和を変換するために私を助けてデータ

func createBodyWithParameters(parameters: [String: String]?, filePathKey: String?, imageDataKey: NSData, boundary: String) -> NSData { 
    let body = NSMutableData(); 

    if parameters != nil { 
     for (key, value) in parameters! { 
      body.appendString("--\(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("--\(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.appendData(imageDataKey) 
      body.appendString("\r\n") 

    body.appendString("--\(boundary)--\r\n") 

    return body 
} 

すべてが同じである必要があります。 問題は、このデータと文字列をすべて連結する "appendString"関数の代替を見つけることです。 私の主な間違いは、機能を追加使用している:

body.append("--\(boundary)\r\n") 

エラー:タイプ予想引数の型に「文字列」の値を変換できません。「データ」

その問題の解決策を見つけるために助けてください!事前に

おかげで...

+1

FWIW、私はそのコードは現在、Aを含む、[この回答](http://stackoverflow.com/a/26163136/1271826)から採用されたと考えていますSwift 3の実装。 – Rob

+0

ありがとう、それは助ける! –

答えて

0

ソリューションは、次のようになります。

func createBodyWithParameters(parameters: [String: String]?, filePathKey: String?, imageDataKey: NSData, boundary: String) -> NSData { 

    let body = NSMutableData() 

    if parameters != nil { 
     for (key, value) in parameters! { 
      body.appendString(string: "--\(boundary)\r\n") 
      body.appendString(string: "Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n") 
      body.appendString(string: "\(value)\r\n") 
     } 
    } 

    let filename = "logo.jpg" 
    let fileNo2 = imageView.image; 
    print("fileNo2") 
    let mimetype = "image/jpg" 

    body.appendString(string: "--\(boundary)\r\n") 
    body.appendString(string: "Content-Disposition: form-data; name=\"\(filePathKey!)\"; filename=\"\(filename)\"\r\n") 
    body.appendString(string: "Content-Type: \(mimetype)\r\n\r\n") 
    body.append(imageDataKey as Data) 
    body.appendString(string: "\r\n") 



    body.appendString(string: "--\(boundary)--\r\n") 

    return body 
} 

extension NSMutableData { 

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

私はコードでもあなたは、文字列の外に体を構成し、Dataとして結果の文字列を返すとしているスウィフト2.

に動作することを疑います。 Swift 3 NSDataはネイティブ構造体Dataに置き換えられました。

NSMutableDataインスタンスを作成し、次にStringを追加しようとするとエラーが発生します。これは不可能です。

このバージョンではSwift 3命名規則(createBody(with parameters:...)を使用して複合文字列を作成し、文字列をDataに変換し、画像データと接尾辞を付加します。

func createBody(with parameters: [String: String]?, filePathKey: String?, imageDataKey: Data, boundary: String) -> Data 
{ 
    var body = "" 

    if let params = parameters { 
     for (key, value) in params { 
      body += "--\(boundary)\r\n" 
      body += "Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n" 
      body += "\(value)\r\n" 
     } 
    } 
    let filename = "user-profile.jpg" 
    let mimetype = "image/jpg" 

    body += "--\(boundary)\r\n" 
    body += "Content-Disposition: form-data; name=\"\(filePathKey!)\"; filename=\"\(filename)\"\r\n" 
    body += "Content-Type: \(mimetype)\r\n\r\n" 

    var data = body.data(using: .utf8)! 
    data.append(imageDataKey) 
    data.append("\r\n--\(boundary)--\r\n".data(using: .utf8)!) 

    return data 
} 
関連する問題