制作一个日程安排 ios 应用程序,但不明白怎么做

Posted

技术标签:

【中文标题】制作一个日程安排 ios 应用程序,但不明白怎么做【英文标题】:Making a schedule ios app but don't understand how to do it 【发布时间】:2016-12-04 12:18:38 【问题描述】:

对于学校,我正在制作一个 ios 应用,其中包含某个学生的花名册。学生可以使用 ID 登录,并使用该 ID 显示相应的时间表。到目前为止,ID系统正在运行。但我似乎无法弄清楚如何使日程安排部分工作。我有每个学生 ID 的 JSON 数据,并且想每天过滤它,但老实说,我不知道如何过滤。

我很想得到一些帮助,因为我真的不知道如何做到这一点。

代码如下:

let url = URL(string: "(will give url if neccesary)")
    let task = URLSession.shared.dataTask(with: url!)  (data, response, error) in
        if error != nil
        
            print ("ERROR")
        
        else
        
            if let content = data
            
                do
                
                    //Array
                    let myJson = try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.mutableContainers) as! NSMutableDictionary

                    let Days = myJson["Days"]  as! NSDictionary
                    let DayName = Days["Monday"]
                    print (DayName)


                
                catch
                

                
            

        
    
    task.resume()

我目前在 "let Days = myJson["Days"] as!NSDictionary" 处得到一个 "Thread 8: signal SIGABRT"

我的控制台显示

“无法将 '__NSArrayM' (0x106520c30) 类型的值转换为 'NSDictionary' (0x106521108)。”

很想得到一些帮助,因为我不知道如何解决这个问题

提前致谢, 赛布伦

【问题讨论】:

错误信息非常清楚:键 Days 的值是一个数组,而不是字典,无论如何,在 Swift 中对 NSMutableArray/Dictionary... 的任何转换都是荒谬的。 对不起,我对 swift/xcode 没有任何经验。我应该把它改成什么? Days 真正包含什么?字符串数组还是什么? 我想要一种方式,例如可以在星期一询问,然后只从星期一获取信息,我和一个朋友试图弄清楚,过了一会儿我们就停下来了跨度> 原来是这样的let myJson = try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.mutableContainers) as! NSMutableDictionary print (myJson),后来我试了一天打印,然后就搞砸了 【参考方案1】:

为了方便起见,首先创建一个类型别名

typealias JSONDictionary = [String:Any]

if let content = data 行不需要,如果error 不是nildata 保证不是nil

这将打印课程的 StudentName、日期名称和键值 Clas-s-roomNameTeacher

   do 
      if let json = try JSONSerialization.jsonObject(with:data!, options: []) as? JSONDictionary 
        print(json["StudentName"] as! String)
        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["Clas-s-room"] as! String
                        let name = lesson["Name"] as! String
                        let teacher = lesson["Teacher"] as! String

                        print(classRoom, name, teacher)
                    

                
            
        

    
   catch 
    print(error)
  

【讨论】:

有效!现在可以将所有天转换为 UITableView 吗?或者什么是最好的展示方式? 为对象创建自定义结构或类总是好的做法。 所以我必须每天创建一个类? 这取决于模型结构。我至少会使用一个带有所有参数的类Lesson,也可能使用一个带有name : Stringclass : Stringdays : [Day] 属性的类Student,以及一个包含name : Stringlessons : [Lesson]Day 类。 我很抱歉,但这不是问题所在。 *** 不是代码编写服务。从 JSON 数据填充表视图是最常见的问题之一。

以上是关于制作一个日程安排 ios 应用程序,但不明白怎么做的主要内容,如果未能解决你的问题,请参考以下文章

IOS 8 iPad 仅制作 Launch Screen 人像

不明白如何本地化 iOS react-native 应用的 plist

敏捷开发一千零一问:怎样处理重要但不明白的任务?

ios16桌面图标转盘效果

iOS UILocalNotification 已安排,但未触发

如何在 iOS 7 中制作完全透明的导航栏