2016-11-11 5 views
0

Попытка получить сообщение 'title', 'content', category 'title' & имя автора из этого JSON. получение ошибки Type 'NSFastEnumerationIterator.Element' (aka 'Any') has no subscript members. печатная почта в консоли работает нормально, но возникает ошибка при попытке получить заголовок сообщения. Пожалуйста помоги. JSON & Swith КодексHot to Fix Type 'NSFastEnumerationIterator.Element' (aka 'Any') не имеет подписчиков

JSON

{ 
    "status":"ok", 
    "count":1, 
    "count_total":44, 
    "pages":44, 
    "posts":[ 
     { 
     "id":87, 
     "url":"http://www.website.com/blogs/my first blog/", 
     "title":"My First Blog", 
     "content":"blog content", 
     "date":"2015-04-06 22:42:12", 
     "modified":"2015-12-26 00:45:09", 
     "categories":[ 
      { 
       "id":45, 
       "title":"Trip", 
       "description":"", 
       "post_count":21 
      } 
     ], 
     "author":{ 
      "id":1, 
      "name":"admin", 
      "url":"", 
      "description":"hello" 
     } 
     } 
    ] 
} 

Swift Code

  if let blogContent = data { 

       do { 

        let jsonResult = try JSONSerialization.jsonObject(with: blogContent, options: JSONSerialization.ReadingOptions.mutableContainers) 

        if let items = jsonResult as? [NSString:Any] { 

         //print(items) 

         let item = items["posts"] as! NSArray 

         for post in item { 

          print(post) 

          print(post["title"]) 

         } 

        } 
       } catch { 

        print("JSON processing failed.") 
       } 

      } 
+0

В разделе «Родственные» есть 6 вопросов с одинаковым названием. Вы уверены, что никто из них не решает вашу проблему? –

+0

Сью все учебные пособия, которые предлагают использовать типы коллекции Foundation в Swift ;-) – vadian

+0

@MartinR да, я пробовал. не смог найти ничего, что могло бы помочь. благодаря – Hitz

ответ

1

Понял работает. Вот рабочий код. Надеюсь, это поможет кому-то с той же проблемой. Спасибо :)

if let blogContent = data { 

       do { 

        let jsonResult = try JSONSerialization.jsonObject(with: blogContent, options: JSONSerialization.ReadingOptions.mutableContainers) 

        if let items = jsonResult as? [String: AnyObject] { 

         if let item = items["posts"] as? NSArray { 

          for posts in item { 

           if let post = posts as? [String: AnyObject] { 

            print(post["title"]!) 

            let categories = post["categories"] as! NSArray 

            for category in categories { 

             if let categ = category as? [String: AnyObject] { 

              print(categ["title"]!) 

             } 
            } 

            let author = post["author"] as! [String: AnyObject] 

            print(author["name"]!) 

           } 

          } 

         }