Простыми словами:
?
- необязательный параметр, который предотвращает сбой кода при значении nil.
!
принудительно развернуть значение, что означает, добавив !
, вы убедитесь, что ваша переменная будет иметь значение, и если она равна nil
, то ваш код потерпит крах, поэтому не используйте !
в случае, если Вы не уверены в ценности.
Тип:
В Swift 4 [<key-Type>: <value-Type>]
- это ваш словарь в формате ключ-значение, а [<object-Type>]
- это массив. Например:
let dictionary: [String: String] = ["name": "Ankit", "Website": "Stack-Overflow"]
let array: [String] = ["Ankit", "Mike", "Reynolds"]
Вам не нужно применять ;
в Swift, и вы можете использовать необязательную проверку с помощью if-let
, чтобы проверить, имеет ли ваша переменная значение при анализе ответа JSON, следующим образом:
HTTP.GET(url, parameters: [], headers: headers) { response in
do {
let json = try JSONSerialization.jsonObject(with: response.data, options: []) as? [String: Any]
var accounts = [Account]()
if let accountsDict = json?["data"] as? [[String: String]] {
accounts = accountsDict.map { dict -> Account in
return Account(name: dict["tenant"]!, geolocation: dict["geolocation"]!)
}
}
completion(accounts)
} catch {
print(error.localizedDescription)
completion(nil)
}
}