Swift 4 introduces a new Codable protocol that lets you serialize and deserialize custom data types without writing any special code and without having to worry about losing your value types. 🎉
Awesome, isn’t it? And this library helps you write less code! It’s an extension for Alamofire that converts JSON data into Decodable object.
private struct Repo: Decodable {
let name: String
let stars: Int
let url: URL
let randomDateCommit: Date
private enum CodingKeys: String, CodingKey {
case name
case stars
case url
case randomDateCommit = "random_date_commit"
}
}
There is a similar method to responseData, responseJSON - responseDecodableObject:
queue - The queue on which the completion handler is dispatched.
keyPath - The keyPath where object decoding should be performed.
decoder - The decoder that performs the decoding of JSON into semantic Decodable type.
let url = URL(string: "https://raw.githubusercontent.com/otbivnoe/CodableAlamofire/master/keypathArray.json")!
let decoder = JSONDecoder()
decoder.dateDecodingStrategy = .secondsSince1970 // It is necessary for correct decoding. Timestamp -> Date.
AF.request(url).responseDecodableObject(keyPath: "result.libraries", decoder: decoder) { (response: AFDataResponse<[Repo]>) in
let repo = response.value
print(repo)
}
Note:
For array: DataResponse<[Repo]>
For single object: DataResponse<Repo>
Requirements
Swift 4+
Xcode 9+
Installation 🔥
CocoaPods
CocoaPods is a dependency manager for Swift and Objective-C Cocoa projects. It has over eighteen thousand libraries and can help you scale your projects elegantly. You can install it with the following command:
$ sudo gem install cocoapods
To integrate CodableAlamofire, simply add the following line to your Podfile:
target 'Test' do
use_frameworks!
pod 'CodableAlamofire'
end
Carthage
Carthage is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks.
You can install Carthage with Homebrew using the following command:
$ brew update
$ brew install carthage
To integrate CodableAlamofire into your Xcode project using Carthage, specify it in your Cartfile:
github "Otbivnoe/CodableAlamofire"
Run carthage update to build the framework and drag the built CodableAlamofire.framework into your Xcode project.
Swift 4 introduces a new
Codable
protocol that lets you serialize and deserialize custom data types without writing any special code and without having to worry about losing your value types. 🎉Awesome, isn’t it? And this library helps you write less code! It’s an extension for
Alamofire
that convertsJSON
data intoDecodable
object.Useful Resources:
WWDC2017
that covers this new feature - What’s New in FoundationUsage
Let’s decode a simple json file:
with the following Swift model:
There is a similar method to
responseData
,responseJSON
-responseDecodableObject
:queue
- The queue on which the completion handler is dispatched.keyPath
- The keyPath where object decoding should be performed.decoder
- The decoder that performs the decoding of JSON into semanticDecodable
type.Note:
DataResponse<[Repo]>
DataResponse<Repo>
Requirements
Installation 🔥
CocoaPods
CocoaPods is a dependency manager for Swift and Objective-C Cocoa projects. It has over eighteen thousand libraries and can help you scale your projects elegantly. You can install it with the following command:
To integrate CodableAlamofire, simply add the following line to your
Podfile
:Carthage
Carthage is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks.
You can install Carthage with Homebrew using the following command:
To integrate CodableAlamofire into your Xcode project using Carthage, specify it in your
Cartfile
:Run
carthage update
to build the framework and drag the builtCodableAlamofire.framework
into your Xcode project.