2015-04-06 31 views
0

我正在使用SwiftyJSON处理我的iOS应用程序中编写的Swift中的JSON。存储SwiftyJSON的一部分

我想将JSON对象的一部分存储在数组中,以便用UITableView填充。

的JSON是:

{"error":"","results":[{"id":1,"name":"test","nickname":"T"},{"id":1,"name":"Lorem","nickname":"L"}]} 

所以基本上我需要存储在字典的“结果”或一些描述的阵列,所以我可以填充该表格时检索数据。

虽然我似乎无法做到这一点。我似乎无法锻炼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

我可能会发布一些你的代码,或只是一个示例代码片段? – Jan 2015-04-06 10:26:44

+0

我已更新帖子,希望这有助于! – jdawg 2015-04-06 10:35:38

回答

0

在使用SwiftyJSON我所有的应用程序我尽量做到以下几点:

if let title = searchResult[index]["show"]["name"].stringValue { 
    newShow.name = title 
} 

每当你存储你的JSON响应的一部分,总是试图把它作为正确的值。我只能阻止将完整的子blob存储在一个变量中,因为它会使工作和解析稍后变得更加困难。

0

在我看来,你可以访问SwiftyJSON下面的SwiftyJSON数组扩展提供的计算属性。

您可以分别使用JSON类型的数组,arrayValue或arrayObject访问例如可选的[JSON],非可选的[JSON]或[AnyObject]。

在我的项目之一,我申报我的TableView控制器桩的阵列:

var postsArray : [Post]? 

“邮报”是我自己的模型对象。稍后我只使用上面列出的属性之一填充此数组。

self.postsArray = persistInMem(jsonPosts.arrayValue) 

请注意,jsonPosts是我使用SwiftyJSON远程获得的JSON对象。 persistInMem只是一个将我的“JSON”数组映射到“Post”对象数组的函数。这里唯一需要注意的是,我确信JSON类型的jsonPosts实际上是一个在其下的数组(否则意味着不确定)我应该使用SwiftyJson的“数组”属性来计算可选的数组。

希望这会有所帮助。