У меня странная проблема, которую я не могу отследить.
У меня есть DataManager, который отвечает за возврат данных в мой TableViewController.Это код
typealias NewsListCompletionBlock = (Result<NewsList>) -> Void
class DataManager {
var subManager: DataManagerProtocol
init() {
if (Config.isUITests()) {
subManager = LocalDataManager()
} else {
subManager = NetworkDataManager()
}
}
}
// MARK: News data manager
extension DataManager {
func getNewsList(completion:@escaping NewsListCompletionBlock) {
subManager.performRequest(route: nil, decoder: JSONDecoder(),
completion: completion)
}
}
. Инициализирует вспомогательный менеджер на основе того, выполняем ли мы UITests или работаем с реальным приложением.Реальное приложение работает, как и ожидалось, но LocalDataManager возвращает ошибку, которую я не могу отследить.
class LocalDataManager: DataManagerProtocol {
@discardableResult
func performRequest<T>(route: APIRouter?, decoder: JSONDecoder = JSONDecoder(), completion: @escaping (Result<T>) -> Void) -> DataRequest where T : Decodable {
let newsListString = """
{
"news" : [
{
"id": 262,
"category": "e",
"title": "Scott Johnson & Paul Fowler Workshop",
"subtitle": "Wedding Photography Workshop | 20th-24th May 2019, Italy",
"link": "",
"date": "2018-08-31"
}
]
}
"""
if let jsonData = newsListString.data(using: .utf8)
{
let result :Result<NewsList>
do {
let newsListObject = try JSONDecoder().decode(NewsList.self, from: jsonData)
result = Result.success(newsListObject)
} catch {
result = Result.failure(NSError(domain: "", code: 123, userInfo: nil))
}
completion(result)
}
}
}
Это код LocalDataManager.Как вы можете видеть, я имитирую вызов блока завершения, предоставляя фиктивные данные, но когда я компилирую, я получаю
DataManager/LocalDataManager.swift:38:24: Cannot convert value of type 'Result<NewsList>' to expected argument type 'Result<_>'