无法将带有数组的字典传递给swift中的请求正文
我有一个名为Beacon的自定义类,它带有一个“toDictionary()”方法,该方法返回Beacon类的键值对无法将带有数组的字典传递给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
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()]