我正在使用SwiftyJSON来处理用Swift编写的iOS应用程序中的JSON。
我想将JSON对象的一部分存储在一个数组中,用。填充UITableView。
JSON是:
{"error":"","results":[{"id":1,"name":"test","nickname":"T"},{"id":1,"name":"Lorem","nickname":"L"}]}
所以基本上我需要将'结果'存储在一个Dictionary或一些描述的数组中,这样我就可以在填充表时检索数据。
我似乎无法实现这一目标。我似乎无法锻炼SwiftyJSON设置子对象的格式。
编辑:我添加了一个精简版的代码,以说明这个问题。我故意在searchResults上没有设置任何类型,并没有将json [“results”]作为任何东西处理,因为我不确定最佳类型。import UIKit
import SwiftHTTP
import SwiftyJSON
class SearchTableViewController: UITableViewController {
var searchResults
func loadSearchResults(){
var request = HTTPTask()
let params: Dictionary<String,AnyObject> = [
"request": "search"
]
request.responseSerializer = JSONResponseSerializer()
request.GET("....", parameters: params, success: {(response: HTTPResponse) in
NSOperationQueue.mainQueue().addOperationWithBlock {
searchResults = json["results"]
}
},failure: {(error: NSError, response: HTTPResponse?) in
NSOperationQueue.mainQueue().addOperationWithBlock {
println("Error.")
}
})
}
}
答案 0 :(得分:0)
在我使用SwiftyJSON的所有应用程序中,我尝试执行以下操作:
if let title = searchResult[index]["show"]["name"].stringValue {
newShow.name = title
}
每当您存储部分JSON响应时,请始终尝试将其作为正确的值。我只能阻止将完整的子blob存储在变量中,因为它会使工作和解析更加困难。
答案 1 :(得分:0)
在我看来,您可以使用SwiftyJSON本身的Array扩展提供的计算属性访问SwiftyJSON下面。
例如,您可以访问可选的[JSON],非可选的[JSON]或[AnyObject],分别使用JSON类型的数组,arrayValue或arrayObject。
在我的一个项目中,我在TableView Controller中声明了一系列帖子:
var postsArray : [Post]?
&#34;邮政&#34;是我自己的模范对象。稍后我会使用上面列出的其中一个属性填充此数组。
self.postsArray = persistInMem(jsonPosts.arrayValue)
请注意,jsonPosts是我使用SwiftyJSON远程获取的JSON对象。 persistInMem只是一个映射我的数组&#34; JSON&#34;进入一个&#34; Post&#34;对象。这里唯一需要注意的是,我确定JSON类型的jsonPosts实际上是一个不在其下的数组(意思是当不确定时)我应该使用&#34;数组&#34; SwiftyJson的属性,它计算一个可选的Array。
希望这有帮助。