[英]How to post composite key data parameters with Alamofire?
我在服務器端有這樣的數據。
對於UserImagesTable,這些是我的參數
{
"status" : false,
"id" : {
"userId" : 1,
"imageId" : 1
}
我需要通過alamofire和改造發布數據。
我這樣嘗試:我為userImages表創建了一個模型類,為userImages.id表創建了另一個模型類。
我的模型類是:
class UserImages
{
var status : Bool? = nil
var id : ImagesId? = nil
func toJson() -> [String:Any] {
return[
"status" : status as Any!,
"id" : id as ImagesId!
]
}
}
class ImagesId
{
var userId : Int16? = nil
var imageId : Int16? = nil
func toJson() -> [String:Any] {
return[
"userId" : userId as Any!,
"imageId" : imageId as Any!,
]
}
}
然后我的Alamofire
let ImageParams = UserImages()
let ImageIdParams = ImagesId()
ImageIdParams.imageId = 2
ImageIdParams.userId = 3
ImageParams.status = true
favouriteVideoParams.id = ImageIdParams.toJson()-->this line coming some error like -->Cannot assign value of type '[String:any]' to type ImageId?
Alamofire.request(url, method: .post, parameters: ImageParams.toJson(), encoding: JSONEncoding.default, headers: Defines.Constants.Headers)
我在張貼文章時所采用的方法是否正確? 如果可能的話,也請給我一些關於改裝后的想法。
對於Alamofire,實際上不需要.toJSON函數,更簡單的解決方案是在函數中創建一個參數變量,該參數變量使用通過函數提供的預定義鍵和變量值對參數進行整形,如下所示:
func postUserImageTable(with status: Bool?, and userImagesId: ImagesId?) {
let url = "your url"
let parameters = [
"status": status!
"id": [
"userId": userImagesId?.userId
"imageId": userImagesId?.imageId
]
]
Alamofire.request(url, method: .post, parameters: parameters)
}
根據Alamofire的官方文檔( 帶有JSON編碼的Params的Alamofire Post )
對於Retrofit,您可以使用@body標記將pojo類發布到您的服務器。 因此,如果您具有與Swift中顯示的等效的Java類,則為:
public class UserImage {
private Boolean status;
private ImagesId imagesId;
//constructor
//getters and setters
}
public class ImagesId {
private int userId, imageId;
//constructor
//getters and setters
}
然后您可以將此呼叫添加到您的改造服務中
@Post("your/post/url")
Response postUserImageTable(@Body UserImage body);
您可以在電話中進行改造:
Call<Response> call = Service.postUserImageTable(new UserImage(false, new ImagesId(1,2));
call.enqueue(New Callback<Response> {
//obligatory overrides from retrofit
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.