I am using
JSONSerialization quite often in my project. Here is an example of my
let json = try JSONSerialization.jsonObject(with: data!, options: ) as? [String: Any]
Note: Options are missing for purpose and I normally have them in my project.
My problem is that I am not pretty sure what do these
options:  do?
What I have found about options:
Specifies that arrays and dictionaries are created as mutable objects.
Specifies that leaf strings in the JSON object graph are created as instances of NSMutableString.
Specifies that the parser should allow top-level objects that are not an instance of NSArray or NSDictionary.
Note2: I found those definitions on : https://developer.apple.com/reference/foundation/nsjsonreadingoptions
My question is: Can someone please explain me differences between those options , what should I use them for and if you could show me some code example of those options it would be perfect :).
Any help appreciated.
Short answer for the first two options:
Ignore them in Swift!
In Swift you can make objects mutable just with the
In Objective-C on the other hand you need the options to make the collection types
NSDictionary mutable ->
NSMutableDictionary with the
NSJSONReadingMutableContainers option or the value strings ->
In both Objective-C and Swift if you are only reading the JSON you don't need mutability at all.
NSJSONReadingAllowFragments is important if the root object of the received JSON is not an array or a dictionary. If it is an array or dictionary you can omit that option, too.
The pair of empty brackets
No options (
options can be omitted in Swift 3).