uber / uber-ios-sdk

Uber iOS SDK (beta)
https://developer.uber.com/docs
MIT License
375 stars 125 forks source link

Remove ObjectMapper dependency #179

Closed edjiang closed 7 years ago

edjiang commented 7 years ago

One of the benefits of Swift 4 is that it defines a new set of object serialization/deserialization APIs. Since the SDK currently depends on ObjectMapper, a 3rd party library, for its JSON handling, I thought it'd be a good idea to move off ObjectMapper to the Codable APIs.

Also, the models were all previously optionals. This makes the SDK harder to use, so I went through the models and added the correct nullability according to documentation and test responses we have.

Note: For primitive types, we do not make them optional. This is because Objective-C will not import optional primitives, and these properties will be inaccessible.

As an alternative, we could use the correct nullability for primitives and attempt to use this workaround to expose objective-c only properties. See Stack Overflow post

See: