2016-12-04 7 views
-2

学校向けに、特定の生徒のための名簿を含むiOSアプリを作っています。生徒はIDでログインでき、そのIDで対応するスケジュールが表示されます。今のところ、IDシステムは機能しています。しかし、私はスケジュール部分を動作させる方法を理解していないようです。私はJSONデータをすべてのstudentidについて持っており、これを毎日フィルタリングしたいと思っていますが、正直なところ手がかりはありません。スケジュールiosアプリを作成する方法を理解していない

私は本当にこれを行う手掛かりを持っていないので、私はいくつかの助けを得るのが好きです。ここで

はコードです:

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() 
} 

現在取得イム: "!NSDictionaryのように "聞かせ日数= myJson [" 日]"

を、私のコンソールショーで "スレッド8信号SIGABRTを"

"'__NSArrayM'(0x106520c30)型の値を 'NSDictionary'(0x106521108)にキャストできませんでした。

は、すべての Sybren

+0

エラーメッセージがかなり明確である:

これはStudentName、曜日名とキーClassroomNameの値と教訓のTeacher印刷されたキーの値を 'Days'は、配列、ではありませんとにかくSwiftの辞書とNSMutableArray/Dictionary ...へのキャストは無意味です。 – vadian

+0

私はswift/xcodeの経験が一切ありません。私はそれを何に変えるべきですか? –

+0

「Days」には実際に何が含まれていますか?文字列の配列または何ですか? – vadian

答えて

0

まず便宜上タイプエイリアスを作成、私はどのように事前にこの

感謝を修正する見当もつかないとして、いくつかの助けを得るのが大好きだ

typealias JSONDictionary = [String:Any] 

errornildataでない場合は、でないことが保証されている行if let content = dataは必要ありません。 210。

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["Classroom"] as! String 
         let name = lesson["Name"] as! String 
         let teacher = lesson["Teacher"] as! String 

         print(classRoom, name, teacher) 
        } 

       } 
      } 
     } 

    } 
    } catch { 
    print(error) 
    } 
+0

それは動作します!今は、すべての日をUITableViewに変換することは可能でしょうか?または、それを表示する最善の方法は何ですか? –

+0

オブジェクトのカスタム構造体またはクラスを作成することは常に良い方法です。 – vadian

+0

私は毎日のクラスを作成する必要がありますか? –

関連する問題