我正在向Alamofire提出请求,并且我有一个课堂来展示一些价值。我想在界面中显示值。
这是我的代码:
class API: NSObject {
class func group1(groupid: Int) {
Alamofire.request(url, method: .post, parameters: parameters, encoding: URLEncoding.default, headers: headers)
.responseJSON { response in
switch response.result {
case .success(let data):
let json = JSON(data)
//print(json)
let ds_valIntake1 = json["data"][0]["ds_val"].int
let ds_valIntake1Sig = json["data"][1]["ds_val"].int
let ds_valLevel = json["data"][2]["ds_val"].int
}
}
}
}
我想从那些“ ds_val”中获取值,然后将其值显示到界面中。我不想使用userdefaults将这些值移到另一个类中。
答案 0 :(得分:0)
import Foundation
class ResponseModel: Codable {
var data: [DataModel]?
private enum CodingKeys : String, CodingKey {
case data = "data"
}
}
class DataModel: Codable {
var ds_val: Int?
private enum CodingKeys : String, CodingKey {
case ds_val = "ds_val"
}
}
func buildObjectFromResponse(data: Data?) -> ResponseModel? {
var object : ResponseModel?
do {
object = try JSONDecoder().decode(ResponseModel.self , from: data!)
} catch (let error){
print(error)
}
return object
}
class API: NSObject {
class func group1(groupid: Int) {
Alamofire.request(url, method: .post, parameters: parameters, encoding: URLEncoding.default, headers: headers)
.responseJSON { response in
switch response.result {
case .success(let data):
if let response = buildObjectFromResponse(data: data){
/* save things to UserDefaults here */
}
}
}
}
}
答案 1 :(得分:0)
您为什么不只创建具有响应格式的Codable
类?然后,您可以使用JSONSerialization
将数据放入可编码的对象中,然后将其传递回完成块。
创建一个可编码的类:
class Response: Codable {
//Populate this with all the fields you need
}
,然后在您的Alamofire电话中,您可以编写:
class API {
func group1(groupid: Int, onSuccess: @escaping Response) {
Alamofire.request(url, method: .post, parameters: parameters, encoding: URLEncoding.default, headers: headers)
.responseJSON { response in
switch response.result {
case .success(let data):
if let data = JSONDecoder.decode(Response.self, from: responseObject) {
onSuccess(data)
}
}
}
}
}
答案 2 :(得分:0)
使用完成块,Apple为此创建了一个
import pygame
import random
screen = pygame.display.set_mode((750,750))
done = False
BLACK = (0,0,0)
WHITE = (255,255,255)
RED = (255,0,0)
BLUE = (0,0,255)
def main():
global BLACK, done, WHITE, RED, BLUE, X, Y
X1 = random.randint(30,300)
Y1 = random.randint(30,300)
W1 = random.randint(30,300)
H1 = random.randint(30,300)
X2 = random.randint(30,300)
Y2 = random.randint(30,300)
W2 = random.randint(30,300)
H2 = random.randint(30,300)
X3 = random.randint(30,300)
Y3 = random.randint(30,300)
W3 = random.randint(30,300)
H3 = random.randint(30,300)
screen.fill(BLACK)
pygame.draw.rect(screen, WHITE, (X1, Y1, W1, H1))
pygame.draw.rect(screen, RED, (X2, Y2, W2, H2))
pygame.draw.rect(screen, BLUE, (X3, Y3, W3, H3))
pygame.display.update()
while not done:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN and event.key == pygame.K_1:
main()
if event.type == pygame.QUIT or (event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE):
pygame.quit()
quit()
main()
pygame.quit()
quit()
然后致电
static func group1(groupid: Int, completion:@escaping (_ r:Any) -> Void) -> Void
{
Alamofire.request(url, method: .post, parameters: parameters, encoding: URLEncoding.default, headers: headers)
.responseJSON { response in
switch response.result {
case .success(let data):
let json = JSON(data)
//print(json)
completion(json as Any}
}
}
}