2016-12-07 80 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