【问题标题】:parsing json data in for loop statement using swift 2使用swift 2在for循环语句中解析json数据
【发布时间】:2017-04-04 20:43:06
【问题描述】:

我正在使用 swift2 开发一个应用程序,将 JSON 数据解析为 UITableView,当单击它移动到其他视图控制器并获取一些数据到标签框的单元格时,它可以完美运行。问题是当我单击表格视图上的任何单元格时,它会将相同的数据提取到视图控制器中,我不知道如何将数据解析为 for 循环语句。

Json 数据(正在从服务器接收数据):

{
  item: [
   {
     name: "name1",
     id: "1",
   },
   {
     name: "name2",
     id: "2"
   }
  ]
}

编写我尝试过的代码:

创建出口标签名称和标签

var arrDict :NSMutableArray=[]
let urlstring = "www.anything.com"
let url = NSURL(string: urlString) 
let data = try? NSData(contentsOfURL: url, options: [])
let json = JSON(data: data)
print(json)

//it helps to print all the json data in console 

现在帮我处理 forloop 语句

【问题讨论】:

  • 您打印的 JSON 无效。
  • 即重复的一个

标签: ios json swift for-loop swift2


【解决方案1】:

试试这个,它可以帮助你:-

 for (_, subjson): (String, JSON) in json["item"]{

     print("YOUR SUBJSON VALUE>> \(subjson["name"].stringValue)")
                    }

【讨论】:

  • 在控制台中打印时它执行良好,但将相同的数据解析到标签框...因为在 func 中确实选择了索引路径处的行,我刚刚连接到其他视图控制器。在其他视图控制器中有四个标签框我必须将数据解析到其中
  • 您能提供任何使用 func 的示例吗?在索引路径选择行吗
  • 您可以将“subjson”传递给该 viewController 并再次解析它,如上面提到的代码,即 subjson["name"].stringValue)"
  • 我如何引用该视图控制器....因为所有功能都写在表格视图控制器中..视图控制器中仅提供标签出口...
  • 创建对 ViewController2 的引用:- var objSubjson:JSON!并在 viewController1:-'let vc = self.storyboard?.instantiateViewController(withIdentifier: "viewController1") as! viewController1 vc.objSubjson = subjson self.navigationController?.pushViewController(vc, animated: true)'
【解决方案2】:

试试这个方法

 let array = json["item"] as! [NSDictionary]
 for dict in array {
    let name = dict["name"] as! String
    let id = dict["id"] as! String
 }

希望对你有帮助

【讨论】:

  • 是的,当然..我会检查并回复..谢谢您的回答
  • 它给了我警告:从 json 转换为不相关的类型 nsdictionary 总是失败
  • 把这个 let dataDict = json 当作! NSDictionary
  • 如果你输出的“print(json)”和上面一样,那么它应该可以工作。检查我更新的答案
  • 对不起,您需要删除 let dataDict = json as? NSDictionary 如果你使用的是 swifty json
【解决方案3】:
var listArray = Dictionary<String, AnyObject>()
listArray["name"] =  json["item"]?.valueForKey("name") as! Array
listArray["id"]  = json["item"]?.valueForKey("id") as! Array

var name = [""]
var id = [""]

name = listArray["name"] as! Array
id = listArray["id"] as! Array

for i in 0..<name.count{
  print(name[i])
  print(id[i])
}
hope it will help

【讨论】:

  • 我会按照你的方法回复....谢谢你的回复
【解决方案4】:

将所有 json 数据放入一个 NSArray(如果数据在 Array 中)

像这样:

让 arr = json as! NSArray

对于 i in 0...arr.count-1

{

让 items = arr[i] as! NSMutableDictionary

var abc = items.valueForKey("name"))as!细绳 //这样就可以取所有数组值了

}

希望对你有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-09
    • 1970-01-01
    • 2018-07-14
    • 1970-01-01
    • 2015-10-04
    • 2014-03-13
    • 1970-01-01
    相关资源
    最近更新 更多