8

This was working in Swift2 but now in Swift3 (after automatic conversion) I'm getting an error:

if self.entry["scheduler"] || self.entry["owner"]

Cannot subscript a value of type 'JSON' with an index of type 'STRING'

The values of self.entry["scheduler"] etc. are boolean but I think the issue is the indices, "scheduler" and "owner"

Of course, I reference other indices of self.entry in the exact same way and get no error when I build.

xcode auto updated and I am living in a nightmare.

Works for a Living
  • 1,262
  • 2
  • 19
  • 44

1 Answers1

16

Substitute whatever type you're expecting for the .string in the first two lines

let scheduler = self.entry["scheduler"].string
let owner = self.entry["owner"].string

if(scheduler != nil || owner != nil)
{
    // Take care here - scheduler and owner are both optionals
}
DavidA
  • 3,112
  • 24
  • 35
  • Additionally you can use a library like SwiftyJSON to solve this in more generic way. It provides you facility to case data to int, bool and other data types as well. `responseBody["driver_profile"]["name"].stringValue` , responseBody["driver"]["age"].intValue For more details, https://github.com/SwiftyJSON/SwiftyJSON Furthermore those methods depend on your Swift and Package versions. – Wimukthi Rajapaksha Feb 25 '20 at 07:25