Swift 2 - 如何从 Alamofire.responseJSON 获取数据
Posted
技术标签:
【中文标题】Swift 2 - 如何从 Alamofire.responseJSON 获取数据【英文标题】:Swift 2 - how to get data from Alamofire.responseJSON 【发布时间】:2015-12-02 18:03:25 【问题描述】:我正在阅读设计+代码课程,我有 2 个文件:
-
DNService.swift
StoriesTableViewController.swift
我从 DesignerNews API 加载数据的 DNService,这里是获取数据的函数:
static func storiesForSection(section: String, page: Int, response: (JSON) ->())
let urlString = baseURL + ResourcePath.Stories.description + "/" + section
let parameters = [
"page": String(page),
"client_id": clientID
]
Alamofire.request(.GET, urlString, parameters: parameters).responseJSON (response) -> Void in
let swiftyData = JSON(response.result.value ?? [])
//print(swiftyData)
在StoriesTableViewController
中,我调用函数storiesForSection()
但它不检索数据:
var stories: JSON! = []
func loadStories(section: String, page: Int)
DNService.storiesForSection(section, page: page) (JSON) -> () in
self.stories = JSON["stories"]
self.tableView.reloadData()
我不知道如何在我的StoriesTableViewcontroller
中填写self.stories
...
我尝试将 swiftyData 存储在 DNService 的 var 中,并在 StoriesTableViewCtler
中创建一个 getStoredSwiftyData()
,但它也不起作用。
【问题讨论】:
【参考方案1】:storiesForSection:page:response
有一个回调函数,只要以JSON对象为参数调用即可。
Alamofire.request(.GET, urlString, parameters: parameters).responseJSON (response) -> Void in
let swiftyData = JSON(response.result.value ?? [])
response(swiftyData)
【讨论】:
谢谢你的回答,我试过了,但我有这个错误:“无法调用非函数类型的值'Response” 我已经怀疑这两个response
对象存在术语冲突。你能把storiesForSection
中的那个改成另一个名字吗?或者将第一个 response
对象分配给具有不同名称的局部变量。
谢谢,就是这个! loadStories() 在另一个函数中,带有另一个名为“responses”的回调【参考方案2】:
//Swift4
import Alamofire
//仅从.get方法中获取数据获取数据后,您可以将其转换为适合您的格式
let url2:URL=URL(string: values)!
Alamofire.request(url2).response
response in
if(response.data != nil)
else
print(response.error)
【讨论】:
以上是关于Swift 2 - 如何从 Alamofire.responseJSON 获取数据的主要内容,如果未能解决你的问题,请参考以下文章
Swift:如何从 Sensortag 2.0 设备恢复数据
如何使用 swift 2.2 从“performSegueWithIdentifier”按钮将视频字段传递给 AVPlayer 控制器