swift 使用 almaofire 获取字典的所有值并传递给 viewcontroller
swift getting all values of a dictionary and passing to viewcontroller using almaofire
您好,我有一个从 api 收集数据的应用程序,我使用 Alamofire 和 swiftyJSON。我现在面临的当前挑战是我在一个数组中有不同的词典,我希望能够重新调整词典中的特定项目。这是我正在使用的数组
Json
[
{
"images": [
{
"id": 8,
"original": "http://127.0.0.1:8000/media/images/products/2018/05/f3.jpg",
"caption": "",
"display_order": 0,
"date_created": "2018-05-26T17:24:34.762848Z",
"product": 13
},
{
"id": 9,
"original": "http://127.0.0.1:8000/media/images/products/2018/05/f5.jpg",
"caption": "",
"display_order": 1,
"date_created": "2018-05-26T17:24:34.815214Z",
"product": 13
},
{
"id": 10,
"original": "http://127.0.0.1:8000/media/images/products/2018/05/f2.jpg",
"caption": "",
"display_order": 2,
"date_created": "2018-05-26T17:25:19.117271Z",
"product": 13
},
{
"id": 11,
"original": "http://127.0.0.1:8000/media/images/products/2018/05/f4.jpg",
"caption": "",
"display_order": 3,
"date_created": "2018-05-26T17:25:19.155159Z",
"product": 13
}
]
}
]
获取单张图片是这样的
Alamofire.request(URL, method: .get, parameters: nil, encoding: JSONEncoding.default, headers: HEADER).responseJSON { (response) in
if response.result.error == nil {
guard let data = response.data else {return}
do {
if let json = try JSON(data: data).array {
for item in json {
let images = item["images"][0]["original"].stringValue
....
这 return 只是索引图像。[0]如果它设置为 [1],它 return 将索引图像设置为 1。
如何 return 所有图像,以便我可以遍历所有图像并显示在集合视图控制器中。将根据要求提供更多代码。
你可以这样编辑:
if let json = try? JSON(data: data).arrayValue {
for item in json {
let imagesList = item["images"].arrayValue
let imagesURL = imagesList.map {[=10=]["original"].string}.compactMap({[=10=]})
if imagesURL.count > 0{
print( imagesURL[0])
}
}
}
或:
do {
let json = try JSON(data: data).array
json?.forEach({ (item) in
let imagesList = item["images"].arrayValue
let imagesURL = imagesList.map {[=11=]["original"].string}.compactMap({[=11=]})
if imagesURL.count > 0{
print( imagesURL[0])
}
})
} catch {
print(error.localizedDescription)
}
您好,我有一个从 api 收集数据的应用程序,我使用 Alamofire 和 swiftyJSON。我现在面临的当前挑战是我在一个数组中有不同的词典,我希望能够重新调整词典中的特定项目。这是我正在使用的数组
Json
[
{
"images": [
{
"id": 8,
"original": "http://127.0.0.1:8000/media/images/products/2018/05/f3.jpg",
"caption": "",
"display_order": 0,
"date_created": "2018-05-26T17:24:34.762848Z",
"product": 13
},
{
"id": 9,
"original": "http://127.0.0.1:8000/media/images/products/2018/05/f5.jpg",
"caption": "",
"display_order": 1,
"date_created": "2018-05-26T17:24:34.815214Z",
"product": 13
},
{
"id": 10,
"original": "http://127.0.0.1:8000/media/images/products/2018/05/f2.jpg",
"caption": "",
"display_order": 2,
"date_created": "2018-05-26T17:25:19.117271Z",
"product": 13
},
{
"id": 11,
"original": "http://127.0.0.1:8000/media/images/products/2018/05/f4.jpg",
"caption": "",
"display_order": 3,
"date_created": "2018-05-26T17:25:19.155159Z",
"product": 13
}
]
}
]
获取单张图片是这样的
Alamofire.request(URL, method: .get, parameters: nil, encoding: JSONEncoding.default, headers: HEADER).responseJSON { (response) in
if response.result.error == nil {
guard let data = response.data else {return}
do {
if let json = try JSON(data: data).array {
for item in json {
let images = item["images"][0]["original"].stringValue
....
这 return 只是索引图像。[0]如果它设置为 [1],它 return 将索引图像设置为 1。
如何 return 所有图像,以便我可以遍历所有图像并显示在集合视图控制器中。将根据要求提供更多代码。
你可以这样编辑:
if let json = try? JSON(data: data).arrayValue {
for item in json {
let imagesList = item["images"].arrayValue
let imagesURL = imagesList.map {[=10=]["original"].string}.compactMap({[=10=]})
if imagesURL.count > 0{
print( imagesURL[0])
}
}
}
或:
do {
let json = try JSON(data: data).array
json?.forEach({ (item) in
let imagesList = item["images"].arrayValue
let imagesURL = imagesList.map {[=11=]["original"].string}.compactMap({[=11=]})
if imagesURL.count > 0{
print( imagesURL[0])
}
})
} catch {
print(error.localizedDescription)
}