Size: a a a

iOS Developers — русскоговорящее сообщество

2021 September 13

Л

Ларік🐲 in iOS Developers — русскоговорящее сообщество
Здравствуйте, такая проблема, пытаюсь получить информацию в апишке и прилетает такая ошибка "The data couldn’t be read because it isn’t in the correct format." Вот мой код:

import Foundation

typealias Response = (Result<CodableProtocol, Error>) -> Void

class APIClient {
   
   static let shared = APIClient()
   private let session = URLSession.shared
   
   func getWeather(completion: @escaping Response) {
       let headers = [
           "x-rapidapi-host": "weatherbit-v1-mashape.p.rapidapi.com",
           "x-rapidapi-key": "e5383be9c1mshb69181b6433a8fcp173fb8jsn803ad90061ff"
       ]
       let url = "https://weatherbit-v1-mashape.p.rapidapi.com/forecast/current"
       guard var component = URLComponents(string: url) else {
           completion(.failure(APIClientError.invalidComponent))
           return
       }
       component.queryItems = [
           URLQueryItem(name: "lat", value: "49.8419"),
           URLQueryItem(name: "lon", value: "24.0315")
       ]
       
       guard let urlComponent = component.url else {
           completion(.failure(APIClientError.invalidURL))
           return
       }
       var request = URLRequest(url: urlComponent)
       request.httpMethod = APIRequest.get.rawValue
       request.allHTTPHeaderFields = headers
       
       session.dataTask(with: request, completionHandler: { data, response, error -> Void in
           if let err = error {
               completion(.failure(err))
               return
           }
           do {
               let weatherDecoded: CurrentWeather = try JSONDecoder().decode(CurrentWeather.self, from: data ?? Data())
               completion(.success(weatherDecoded))
           } catch {
               completion(.failure(error))
//                print(error.localizedDescription)
           }
       }).resume()
   }
}
источник

AS

Amir Sabitov in iOS Developers — русскоговорящее сообщество
Как его починить ? ;)
источник

IG

Ivan Gaydamakin in iOS Developers — русскоговорящее сообщество
удалить оутлет в сториборде и заного привязать к твоему коду
источник

AS

Amir Sabitov in iOS Developers — русскоговорящее сообщество
Делал, все равно то же самое
источник

SM

Sergey M in iOS Developers — русскоговорящее сообщество
Может попробовать Locale.current - она будет выдавать текущие настройки телефона для этого пользователя.
источник

OS

Oleksandr Savchenko in iOS Developers — русскоговорящее сообщество
Разобрался.
Надо было не указывать явно формат.
А указать df.timeFormat = .short
источник

J

Jeytery in iOS Developers — русскоговорящее сообщество
добрый день, есть ли какая-то возможность сделать стандартрную реализацию/сделать опциональными/необзятальными методы датасоурса (numberOfRow, cellForIndexPathAt) у коллеции/таблицы?
источник

OS

Oleksandr Savchenko in iOS Developers — русскоговорящее сообщество
Думаю что нет. Но я не эксперт
источник

RR

Roman Resenchuk in iOS Developers — русскоговорящее сообщество
Ребят, вопрос не совсем по iOS разработке, но по поводу нашего комьюнити. Вдруг кто знает, может быть завтра будет где-то в Питере трансляция Apple Event, где можно посидеть уютно, пообщаться с единомышленниками?
источник

SM

Sergey M in iOS Developers — русскоговорящее сообщество
у тебя с запросом что то неверно - ты видел, что тебе возвращает сервак? <html>
<head><title>500 Internal Server Error</title></head>
<body bgcolor="white">
<center><h1>500 Internal Server Error</h1></center>
<hr><center>openresty/1.11.2.2</center>
</body>
</html>
источник

AP

Andriy Pyvovarov in iOS Developers — русскоговорящее сообщество
Привет всем. Кто-то может подсказать, каким образом лучше реализовать pickerview, как на скрине?
источник

Л

Ларік🐲 in iOS Developers — русскоговорящее сообщество
Я в postman’e тестил и все работало
источник

SM

Sergey M in iOS Developers — русскоговорящее сообщество
Перед do в твоем коде добавь эти строки и ты увидишь, что тебе отвечает сервер let str = String(decoding: data!, as: UTF8.self)
           print(str)
источник

Л

Ларік🐲 in iOS Developers — русскоговорящее сообщество
Окей, спасибо, посмотрю
источник

SM

Sergey M in iOS Developers — русскоговорящее сообщество
Можешь просто в терминале запускать - тот же ответ
curl --location --request GET 'https://weatherbit-v1-mashape.p.rapidapi.com/forecast/current' \
--header 'x-rapidapi-host: weatherbit-v1-mashape.p.rapidapi.com' \
--header 'x-rapidapi-key: e5383be9c1mshb69181b6433a8fcp173fb8jsn803ad90061ff'
источник

SM

Sergey M in iOS Developers — русскоговорящее сообщество
весь этот блок надо ^^^
источник

SM

Sergey M in iOS Developers — русскоговорящее сообщество
Скорее всего проблема в правах на камеру. Нашел вот такое - второй ответ, что это принципиально невозможно было в 19 году изза бага или специально. https://stackoverflow.com/questions/56646575/wkwebview-does-not-allow-camera-access-in-application
источник

Л

Ларік🐲 in iOS Developers — русскоговорящее сообщество
Но я все равно не понимаю как это решить?
источник

АН

Александр Наумов... in iOS Developers — русскоговорящее сообщество
Самое интересное что доступ запрашивает и я его разрешаю
источник

SM

Sergey M in iOS Developers — русскоговорящее сообщество
показывай запрос постмана который работал. МОжно в личку
источник