2017-11-09 4 views
0

Ich versuche, einige Parameter Server wie folgt zu schreiben:Array als Wörterbuch Wert hinzufügen

["name":"john" , "age":"25"] 

aber es gibt key/value die eine Reihe von Array erfordert, genannt tags, wenn ich es hinzufügen, wie dies Zum Wörterbuch

tagsArray = ["#tag1" , "#tag2" , "#tag3"] 

["tags":tagsArray] as [String:Any] 

meine App abstürzt aufgrund dieses Fehlers:

- [Swift._SwiftDeferredNSArray da taUsingEncoding]: unerkannte Selektor Instanz gesendet 0x600000234080

*** app Abschluss aufgrund abgefangene Ausnahme 'NSInvalidArgumentException', Grund: '- [Swift._SwiftDeferredNSArray dataUsingEncoding]: unerkannter Selektor gesendet Instanz 0x600000234080'

Wie soll ich Array im Wörterbuchwert hinzufügen?

Edited:

let parameters = ["hash":appDefaults.getUserHash() , "string": vHash , "media_title":vTitle , "description":vDescription , "Keywords[]":insertTagArray] as [String : Any] 

      Alamofire.upload(multipartFormData: { multipartFormData in 

       multipartFormData.append(imgData, withName: "photofileupload",fileName: "file.jpg", mimeType: "image/jpg") 

       for (key, value) in parameters { 
        multipartFormData.append((value as AnyObject).data(using: String.Encoding.utf8.rawValue)!, withName: key) 
       } 
      }, 
          to:URLserver) 
/// rest of code 
+0

Könnten Sie mehr Code zur Verfügung stellen, sieht aus wie Ihre Konvertierung des Wörterbuchs in Daten? –

+0

@NeilFaulkner überprüfen bearbeitet Q –

+0

Welche Typen sind appDefaults.getUserHash(), vHash, vTitle usw. .... alle Zeichenfolgen? –

Antwort

0

Wenn Sie das Wörterbuch durchlaufen, es stürzt ab, weil Sie versuchen, die Anordnung nicht die Saiten innerhalb des Arrays zu kodieren. Sie sollten auch das Array von Strings durchlaufen und sie codieren. Sie können dies tun:

Alamofire.upload(multipartFormData: { multipartFormData in 

     multipartFormData.append(imgData, withName: "photofileupload",fileName: "file.jpg", mimeType: "image/jpg") 

     for (key, value) in parameters { 

      if let tagsArray = value as? [String]{ 

       let stringsData = NSMutableData() 
       for tag in tagsArray{ 
        if let stringData = string.dataUsingEncoding(NSUTF8StringEncoding) { 
         stringsData.appendData(stringData) 
        } 
       } 

       multipartFormData.append(stringsData), withName: key) 
      } 
      else if let stringValue = value as? String{ 

       multipartFormData.append((value as AnyObject).data(using: String.Encoding.utf8.rawValue)!, withName: key) 

      } 

     },to:URLserver) 

    } 
Verwandte Themen