2016-06-12 90 views
-1

我在创建alamofire的参数对象时遇到了问题。 一些String键没有“”以及一些字符串值。Swift - 创建参数对象

你们能告诉我我做错了什么吗?

provider_user_id provider_uid

设备 - > DPI 名 OS

maker-> 名

有人能向我解释为什么:

func callFineBackend(provider_uid:String!,provider_user_id:String!) -> String{ 
    print("get token and post") 

    let screen = UIScreen.mainScreen().bounds 
    let res_x = Int(screen.width) 
    let res_y = Int(screen.height) 
    let devicename = String(UIDevice.currentDevice().name) 
    let os = String(UIDevice.currentDevice().systemVersion) 
    let mem_mb = Double(NSProcessInfo.processInfo().physicalMemory) 
    let provider_name = "facebook" 
    let dpi = 126 


    let xlatGPS = 34.951231 
    let xlonGPS = 43.714323 
    let stringLat = String(xlatGPS) 
    let stringLon = String(xlonGPS) 

    let headers: [String: String] = [ 
     "Accept": "application/json", 
     "Content-Type":"application/json", 
     "X-Latitude": stringLat, 
     "X-Longitude": stringLon 
    ] 

    let parameters: [String: AnyObject] = [ 

     "maker": [ 
      "name": "Apple" 
     ], 
     "device": [ 
      "name": devicename, 
      "mem_mb": mem_mb, 
      "dpi": dpi, 
      "res_x": res_x, 
      "rex_y": res_y, 
      "os": os 
     ], 
     "provider_name": provider_name, 
     "provider_user_id": provider_user_id, 
     "provider_uid": provider_uid, 
    ] 

    print(parameters) 

打开到:

[ 
    "provider_user_id": 12315123512, "device": { 
    dpi = 126; 
    "mem_mb" = 4294967296; 
    name = "iPhone Simulator"; 
    os = "9.3"; 
    "res_x" = 320; 
    "rex_y" = 480; 
}, "provider_uid": EAAX, 
"maker": { 
    name = Apple; 
}, "provider_name": facebook 
] 
+0

因为打印表现这样!发送数据到服务器,你会发现字典*希望*正确到达。 – luk2302

回答

0

打印的内容没有错。

打印NSDictionary时,只有包含不是字母或数字的字符时,字符串才被引号包围。

在这种情况下,parameters是类型Dictionary, 但parameters["maker"]parameters["device"]等都是NSDictionary类型的。