2017-02-04 45 views
1

我有下面的代码,我相信我的数组(字典)分成3个部分使用for (_ , value) in dict {如何将这个数组拆分成单独的元素/数组以便在Swift的Table中使用?

 let json = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? [String:AnyObject] 
        print (json!) 

        if let dict = json?["playerForm"] as? [String:AnyObject] { 
         print ("step 1") 

         for (_ , value) in dict { 
          if let arr = value as? [[String:Any]] { 
           print(arr) 
           self.leagueForm = arr.flatMap { Form($0) } 

           for i in 0..<self.leagueForm.count { 

            let form = self.leagueForm[i] 
            self.formGuide.append(form.player_result!) 

           } 
           print ("break") 

          } 
         } 


         print (self.formGuide) 
        } 

我希望在self.leagueForm中有3个元素包含每个玩家的数据。

该数据随后投入到这个自定义类:

struct Form { 
    var player_result: String? 
    var player_name: String? 
    var result_date: String? 
    var result_id: String? 

    init(_ dictionary: [String : Any]) { 
     self.player_result = dictionary["result"] as? String ?? "" 
     self.player_name = dictionary["name"] as? String ?? "" 
     result_date = dictionary["date"] as? String ?? "" 
     result_id = String(dictionary["results_id"] as? Int ?? 0) 

    } 
} 

var leagueForm = [Form]() 

当我print (arr)它打印全阵列。

我的目标是在自定义类中有3组数据,每个玩家有1组数据。您可以在下面的截图中看到每个玩家的休息时间。

enter image description here

在此图像中,你看到每个球员的形式已被添加到一个元素的最后一行。

想我要的是类似如下:

[name: G , results: "W", "D", "W", "D", "W", "W", "D", "L"] 
[name: Dicky, results: "L", "L", "D", "W", "L", "W", "W", "W"] 
[name: Sultan, results: "W", "W", "D", "L", "L", "L", "D", "L"] 

那我可以再通入一个表来显示结果。

我该如何做到这一点?或者我如何测试我的自定义课程以查看目前为止我在哪里?

回答

0

可以实现这样

var arrResult : [String] = [] 
let arrMainData = [["name":"ABC","result":"result1"],["name":"ABC","result":"result2"],["name":"ABC","result":"result3"]] 

let name : String! = arrMainData[arrMainData.count-1]["name"] 

for index in 0...arrMainData.count-1{ 
    arrResult.append(arrMainData[index]["result"]!) 
} 

let myArr : [String: AnyObject] = ["name" : name,"arrResult":arrResult] 
print(myArr) 

结果应该是像[名:ABC,结果: “RESULT1”, “结果2”, “result3”]]

+0

感谢您抽出时间来回答@Sunil,但我不知道怎么回答你适用于我的情况。 – RDowns

+0

@RDowns在'init(_字典:[String:Any]){}'里面struct Structure的init方法 –

+0

中实现。或内部'为我在0 .. RDowns

0

for each是一个更SWIFTY实现for循环的方式,但Sunil实现它的方式在功能上是相同的。你可以简化的一件事就是你为每个循环实现你的方式 - 如果你不需要索引,根本不要包含它 - 你不需要用_替换它

这里是你可能会改写leagueForm部分代码的

for value in dict { 
    if let arr = value as? [[String:Any]] { 
     print(arr) 
     self.leagueForm = arr.flatMap { Form($0) } 

     for form in self.leagueForm { 
      self.formGuide.append(form.player_result!) 
     } 
     print ("break") 

    } 
} 
+0

谢谢,我把它放在我的'for i in 0 .. RDowns

+0

我会更新我的答案 – Russell

相关问题