Hot to Fix Type 'NSFastEnumerationIterator.Element' (aka 'Any') has no subscript members

307 views Asked by At

Trying to get post's 'title','content', categorie's 'title' & author name out of this JSON. getting Error Type 'NSFastEnumerationIterator.Element' (aka 'Any') has no subscript members. printing post in console works fine but getting error while trying to get title of post. Please help. JSON & Swith Code is

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.")
                }

            }
1

There are 1 answers

0
Hitz On

Got it working. Here is the working code. Hope it can help someone with same problem. Thanks :)

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"]!)

                                }

                            }

                        }