Here's how I usually define types of models with a failover initializer.
struct Person {
let firstName: String
let middleName: String?
init?(JSONData data:[String:AnyObject]) {
guard let firstName = data["firstName"] as? String else { return nil }
self.firstName = firstName
self.middleName = data["middleName"] as? String
}
}
Why Struct?
As you can see, I use Struct instead of a class, there are at least two big reasons for this:
failable initializers structs, nil- ( )
let?
guard let, , - , .
middleName. , middleName . , middleName , Person,
struct Person {
let firstName: String
let middleName: String
init?(JSONData data:[String:AnyObject]) {
guard let
firstName = data["firstName"] as? String,
middleName = data["middleName"] as? String else { return nil }
self.firstName = firstName
self.middleName = middleName
}
}
, - ! 😱
!
[...] Swift , . Swift , , .