Skip to content

Instantly share code, notes, and snippets.

@jaumevn
Created January 3, 2018 16:36
Show Gist options
  • Save jaumevn/577e51288ee3dcdc2b468c6985863fe8 to your computer and use it in GitHub Desktop.
Save jaumevn/577e51288ee3dcdc2b468c6985863fe8 to your computer and use it in GitHub Desktop.
func decode(data: Data) throws -> User? {
do {
let decoder = JSONDecoder()
let user = try decoder.decode(User.self, from: data)
return user
} catch let error {
print(error)
return nil
}
}
func encode(user: User) -> Data? {
do {
let encoder = JSONEncoder()
let data = try encoder.encode(user)
return data
} catch let error {
print(error)
return nil
}
}
func loadUser() -> User? {
guard let fileURL = Bundle.main.url(forResource: "user", withExtension: "json") else {
print("couldn't find the file")
return nil
}
do {
let content = try Data(contentsOf: fileURL)
let user = try decode(data: content)
return user
} catch let error {
print(error)
return nil
}
}
// We can decode a User from a json document
if let user = loadUser() {
print(user.name)
for device in user.devices {
print(device.name)
}
// We can encode the user
if let data = encode(user: user) {
print(data)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment