2016-12-07 79 views
-1

我一直在忙於爲學校項目創建一個Schedule應用程序,但似乎無法弄清楚。這個網站上的某個人已經幫我從JSON鏈接中過濾出了數據,但我無法真正實現它的效果。我想將我在控制檯中獲得的數據放到Table視圖中。我獲得了5天的名單信息,所以每個單元格應該有不同的信息。我觀看過幾個YouTube視頻,並且環視了一下,但它或者不是我真正需要的,或者我不瞭解它的工作方式。 代碼我目前有:使用json數據填充表格視圖

typealias JSONDictionary = [String:Any] 

let savedValue = UserDefaults.standard.string(forKey: "LoginUserID") 


    let url = URL(string: "http://hpops.nl/greijdanus.php?Action=Schedule&StudentID=16049") 
    let task = URLSession.shared.dataTask(with: url!) { (data, response, error) in 
     if error != nil 
     { 
      print ("ERROR") 
     } 
     else 
     { 
      if let content = data 
      { 
       do { 
        if let json = try JSONSerialization.jsonObject(with:data!, options: []) as? JSONDictionary { 
         if let days = json["Days"] as? [JSONDictionary] { 
          for day in days { 
           print(day["DayName"] as! String) 
           if let lessons = day["Lessons"] as? [JSONDictionary] { 
            for lesson in lessons { 
             let classRoom = lesson["Classroom"] as! String 
             let name = lesson["Name"] as! String 
             let teacher = lesson["Teacher"] as! String 
             print(teacher) 
            } 

           } 
          } 
         } 

        } 
       } catch { 
        print(error) 
       } 


      } 

     } 
    } 
    task.resume() 

所以我需要首先能夠得到的信息,例如只需星期一。然後,我需要將表單元分成7個部分,然後將所有信息放入這些部分。 我希望有人可以幫忙,因爲我真的在奮鬥 在此先感謝, Sybren

+1

如果YouTube和SO不幫你,你嘗試過閱讀的文檔? – dasdom

+0

來自xcode本身? –

+0

星期一的信息?沒有人知道你有什麼樣的數據集。 –

回答

0

您正在解析數據。這很好,但你需要參考它,即一個對象。 (更新:查看你的數據和你的解析,你將會遇到一些問題DayName & Lesson是字典數組裏面的字典Day。你的解析不是很完整......)

TableViews work best當訪問一個對象數組時。要創建一個對象數組,你需要創建一個類(我假設的「Lessons」)。在課堂中,您將設置Lesson對象應具有的屬性 - > Classroom,Name,Teacher。這是我爲一個簡單的項目製作的一個Class文件。

class DailyWeather: NSObject { 

var time : Double = 0.0 
var summaryDescription : String = "" 
var temperatureMin : Double = 0.0 
var temperatureMax : Double = 0.0 
var precipProbability : Double = 0.0 

override init() { 
    super.init() 

    self.time = 0.0 
    self.summaryDescription = "" 
    self.temperatureMin = 0.0 
    self.temperatureMax = 0.0 
    self.precipProbability = 0.0 

} 

}

正如你所看到的,我宣佈我的所有屬性,我需要在課堂上。我採取了一個簡單的路線,並給他們所有的值開始,無論它們是空字符串還是值爲0(如果數據類型是Int或Double)。然後我初始化了它們。之後,我可以創建一個對象,並在分析JSON數據時設置它的值。

if let dailyDict = jsonDictionary["daily"] as? JSONDictionary { 
        print(dailyDict) 

        if let dataArray = dailyDict["data"] as? JSONArray { 

         print(dataArray) 

         for dataDict in dataArray { 

          let dailyWeatherData = DailyWeather() 

          if let summary = dataDict["summary"] as? String { 
           dailyWeatherData.summaryDescription = summary 

          } else { 
           print("I could not parse summary") 
          } ... <continue to parse and then append the object at the end before the loop begins again> 

正如你所看到的,只是後,我開始通過我的數據數組循環,我創造了我上面

創建
let dailyWeatherData = DailyWeather() 

從那裏,我可以設置該屬性的類的實例dailyWeatherData對象,而我解析它。通過將對象放置在循環中,每次都會爲您創建一個新對象。

從那裏開始,您需要在循環結尾追加對象,然後重新開始對象數組(在我的情況下是一組DailyWeather對象)。

我會假設你在ViewController中所做的一切(這是大多數新手開始),所以viewDidLoad中()

var DailyWeatherArray = [DailyWeather]() 

這將創建一個陣列之前,把你的對象數組頂部是將解析所有在循環中創建的對象。您將在循環結束之前通過將對象附加到數組來放置這些對象。

之後,您可以從將用於填充tableview的TableViewDelegates和DataSource函數中訪問數組。我會讓你把這一部分弄清楚,因爲我已經給了你相當多的東西。

**我的代碼是在一箇舊版本的雨燕,所以有可能是一對夫婦不符的......

+0

只是一個說明,當談到xcode/swift時,我絕對是noob。我把它放在鏈接到tableview的viewcontroller中嗎?我該如何改變它以適應我的數據? –

+0

這是一個類似的項目,我做了一段時間的工作。看看它,看看它是否給你一個跳躍點開始... – cmyers78

+0

https://github.com/cmyers78/TIY-Assignments/tree/master/18a/MoviesListSwift – cmyers78