В настоящее время я предоставляю некоторым пользователям доступ к моему приложению через TestFlight, чтобы они могли его протестировать. На каждом iPhone приложение работает совершенно без проблем, но на iPhone 5 приложение падает каждый раз. В симуляторе xCode все работает правильно, но не на реальном устройстве.Alamofire вызывает крах на iPhone 5
Похоже, что Alamofire вызывает сбой. Проблема заключается в Alamofire> Источник> Функции> ResponseSerialization.swift> ответ (очереди: completionHandler :)
Вот код из функции:
/// Adds a handler to be called once the request has finished.
///
/// - parameter queue: The queue on which the completion handler is dispatched.
/// - parameter completionHandler: The code to be executed once the request has finished.
///
/// - returns: The request.
@discardableResult
public func response(queue: DispatchQueue? = nil, completionHandler: @escaping (DefaultDataResponse) -> Void) -> Self {
delegate.queue.addOperation {
(queue ?? DispatchQueue.main).async {
var dataResponse = DefaultDataResponse(
request: self.request,
response: self.response,
data: self.delegate.data,
error: self.delegate.error
)
dataResponse.add(self.delegate.metrics)
completionHandler(dataResponse)
}
}
return self
}
completionHandler(dataResponse)
выглядит это проблема.
Ниже также скриншот из XCode
Это родственный Alamofire проблема? Потому что на каждом другом устройстве (5, 6, 7 Plus, SE и 7) он работает без проблем. Авария происходит, когда iPhone подключен к Wi-Fi и когда он использует мобильную сеть.
Спасибо за любые советы!
EDIT: Это должно быть раздел кода, который вызывается при запуске приложения:
Alamofire.request("https://app.site.tld/mobile/ios", parameters: parameters).response { response in
print("Request: \(response.request)")
print("Response: \(response.response)")
print("Error: \(response.data)")
if response.response != nil{
if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) {
print("Data: \(utf8Text)")
let weatherDataArr = utf8Text.components(separatedBy: "~")
guard let hash = String(weatherDataArr[0]) else {
completion(nil)
return
}
do {
//working with received data.
//let currData: wData = try wData(hash: hash, ....)
completion(currData)
} catch {
print("error creating Object: \(error)")
completion(nil)
}
}
else {
completion(nil)
}
}else {
completion(nil)
}
}
Просто нашел предупреждение в Xcode, который говорит:
'catch' block is unreachable because no errors are thrown in 'do' block
В чем версия iOS для iPhone 5? И какие версии iOS находятся на других устройствах? – mixel
Есть ли сообщение об ошибке или код? – mixel
Где вы вызываете функцию. Кажется, что он не имеет права. Это из статического экземпляра, который называется без ссылки? – Emptyless