存储SwiftyJSON的一部分

时间:2015-04-06 10:16:56

标签: ios json uitableview swift swifty-json

我正在使用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.")
                }
        })
    }

}

2 个答案:

答案 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。

希望这有帮助。