无法将带有数组的字典传递给swift中的请求正文

无法将带有数组的字典传递给swift中的请求正文,swift,rest,nsdictionary,alamofire,Swift,Rest,Nsdictionary,Alamofire,我有一个名为Beacon的自定义类,它带有一个“toDictionary()”方法,该方法返回Beacon类的键值对 let detectedBeacon = Beacon(id: "QA", strength: Float(234), proximity: "far", time: self.getISO

我有一个名为Beacon的自定义类,它带有一个“toDictionary()”方法,该方法返回Beacon类的键值对

let detectedBeacon = Beacon(id: "QA",
                                strength: Float(234),
                                proximity: "far",
                                time: self.getISODateFormat(),
                                wasOffline: false,
                                osVersion: "ios 10",
                                batteryLevel: "12",
                                uuid: "adadaad",
                                majorId: 4,
                                minorId: 5,
                                section: "QA",
                                region: "temp")


let array = [detectedBeacon.toDictionary()]
我用这个字典项创建了一个数组(目前数组中只有一个条目)。 现在,我将这个数组包装到一个字典中,以便将其传递给API主体

let locationParams : Dictionary<String, AnyObject> = ["locations" : array as AnyObject]
LocationApiManager.updateLastLocationOf(deviceId: deviceId, parameter: locationParams as [String : AnyObject]? ) {
        (response, errorMessage) in

    }
为什么会这样

更新 我今天的演讲方法

 func toDictionary() -> [String : AnyObject] {
    return (
        ["beaconId": self.beaconId as AnyObject,
         "beaconStrength": self.beaconStrength as AnyObject,
         "proximity": self.proximity as AnyObject,
         "time": NSDate() as AnyObject,
         "wasOffline": self.wasOffline as AnyObject,
         "osVersion": self.osVersion as AnyObject,
         "batteryLevel": self.batteryLevel as AnyObject,
         "uuid": self.uuid as AnyObject,
         "majorId": self.majorId as AnyObject,
         "minorId": self.minorId as AnyObject,
         "section": self.section as AnyObject,
         "region": self.region as AnyObject,
         "userId": "0001" as AnyObject]
    )
}
update location方法包含一些类似的代码,如下所示:

class func postData(apiEndPoint: String,
                     parameters: [String: AnyObject]?,
                        headers: HTTPHeaders,
                     completion:
                        @escaping (_ responseFromBaseAPI : [String : AnyObject]?) ->()) -> Bool {
    UIApplication.shared.isNetworkActivityIndicatorVisible = true


    Alamofire.request(apiEndPoint,
                            method: .post,
                        parameters: parameters,
                          encoding: URLEncoding.httpBody,
                           headers: headers).responseJSON { result in
            completion(result.result.value as? [String: AnyObject])
            UIApplication.shared.isNetworkActivityIndicatorVisible = false
        }
    return true
}

好的,您正在创建一个数组,其中仅包含字典元素:

let array = [detectedBeacon.toDictionary()]
您不想直接在
位置下传递字典吗?
您可以尝试只传递
detectedBeacon.toDictionary()
,而不是
[detectedBeacon.toDictionary()]

实际上,我的意思是
locationapimager.updateLastLocationOf
可能需要不同的结构。这个方法是如何实现的?它期望什么参数

更新:

那么,您对服务器的实际期望是什么?您发送的不是JSON,而是字典的字符串表示,对吗

let array = [detectedBeacon.toDictionary()]