vk7*_*k72 8 json ios swift alamofire
这肯定会被问到几次,但我还没有找到正确的答案,尽管我一直很努力.
我使用Alamofire和SwiftyJSON,我的JSON数据看起来像这样:
{
"528" : {
"name" : "Name 1",
"id" : "528",
"product_id" : null,
"visible" : "0",
"level" : "2"
},
"29" : {
"name" : "Name 2",
"id" : "29",
"product_id" : null,
"visible" : "1",
"level" : "1"
},
"173" : {
"name" : "Name 3",
"id" : "173",
"product_id" : null,
"visible" : "0",
"level" : "2"
},
"143" : {
"name" : "Name 4",
"id" : "143",
"product_id" : null,
"visible" : "1",
"level" : "2"
},
Run Code Online (Sandbox Code Playgroud)
...使用此代码:
Alamofire.request(.GET, dataURL, parameters: nil, encoding: .JSON)
.responseJSON { (request, response, jsonData, error) in
let json = JSON(jsonData!)
println(json)
}
Run Code Online (Sandbox Code Playgroud)
...所以JSON一切都应该没问题
我如何访问该数据?我的意思是我如何获得名称,ID,product_ids等
我怎样才能将这些数据(名称)放到我的TableViewController中?
Jon*_*han 14
我在我的一个项目中使用SwiftyJSON和Alamofire.这是我如何使用它.
// Step 1
protocol APIProtocol {
func didReceiveResult(results: JSON)
}
// Step 2
func get(path: String, parameters: [String: AnyObject]? = nil, delegate: APIProtocol? = nil){
let url = "\(self.hostname)\(path)"
NSLog("Preparing for GET request to: \(url)")
Alamofire.request(.GET, url, parameters: parameters)
.responseJSON { (req, res, json, error) in
if(error != nil) {
NSLog("GET Error: \(error)")
println(res)
}
else {
var json = JSON(json!)
NSLog("GET Result: \(json)")
// Call delegate if it was passed into the call
if(delegate != nil) {
delegate!.didReceiveResult(json)
}
}
}
}
// Step 3
class ActivityViewController: UITableViewController, APIProtocol {
var activityModelList: NSMutableArray = [] // This is the array that my tableView is using.
...
func didReceiveResult(result: JSON) {
var activities: NSMutableArray = []
NSLog("Activity.didReceiveResult: \(result)")
for (index: String, activity: JSON) in result {
var activityModel = ActivityModel(
id: activity["id"].intValue,
message: activity["message"].stringValue
)
activities.addObject(activityModel)
}
// Set our array of new models
activityModelList = activities
// Make sure we are on the main thread, and update the UI.
dispatch_sync(dispatch_get_main_queue(), {
self.refreshControl!.endRefreshing()
self.tableView.reloadData()
})
}
}
// Step 4
override func viewDidLoad() {
MyAPI.get("/activities", delegate: self)
}
Run Code Online (Sandbox Code Playgroud)
访问器(至少对于 SwiftyJSON)的工作方式如下:
if let userName = json[0]["528"]["name"].string{
println(userName) // "Name 1"
}
Run Code Online (Sandbox Code Playgroud)
有关如何使用 SwiftyJSOn 的更多信息可以在其官方文档中找到: https: //github.com/SwiftyJSON/SwiftyJSON
关于如何将数据放入 UITableView 中,有很多方法。例如,设置一个 UITableView 单元格,然后将 JSON 数据加载到某种数组中。
| 归档时间: |
|
| 查看次数: |
16468 次 |
| 最近记录: |