у меня есть это:нильполугруппы коалесцирование: Использование дополнительных типов в качестве значения по умолчанию в Swift
let queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
dispatch_async(queue, {
if let data = NSURLConnection.sendSynchronousRequest(self.buildRequestForVenueLocation(location, identifier), returningResponse: &response, error: &error) {
let responseDictionary: AnyObject? = NSJSONSerialization.JSONObjectWithData(data, options: .allZeros, error:&error) ?? error?.localizedDescription
dispatch_async(dispatch_get_main_queue(), {
completion(venues: responseDictionary, error: error)
})
} else {
println("There was a problem with the request...")
}
})
Мой вопрос относительно этой линии, в частности:
let responseDictionary: AnyObject? = NSJSONSerialization.JSONObjectWithData(data, options: .allZeros, error:&error) ?? error?.localizedDescription
Является ли это правильное использование nil coalescing
?
Согласно документации Apple, это равносильна:
a != nil ? a! : b
Если будет ноль, а возвращается, но это дело, если б это необязательный тип?
EDIT
В случае, если кто задавался вопросом, вот на что это похоже, когда я вызываю функцию:
v.performVenueLocationRequest(l.location, identifier: "4d4b7105d754a06374d81259") {
if let result = $0 as? [String: AnyObject] ?? $1 {
println(result)
}
}
Понравилось, спасибо! В моем случае, хотя - словарь, который передается в закрытие, в любом случае принимает два необязательных аргумента, затем я разворачиваю в вызове фактической функции –