Как передать данные из API в tableViewCell, в другой tableViewCell в Swift 4?
Я работаю над приложением для отслеживания ТВ, где вы можете искать телевизионные шоу и сохранять их, чтобы увидеть, когда выйдет новый эпизод.
У меня вопрос, как бы я получить данные фильма из клетки в searchTableViewController
а также present
выбранные данные в ячейку на myShowsTableViewController
?
1 ответ
Это очень широкий вопрос и, как правило, не подходит для Stackru, который предназначен для более "детальных вопросов".
Тем не менее, я бы порекомендовал создать класс под названием DataManager
или что-то типа того. Что касается вызовов API, я бы рекомендовал использовать что-то вроде Alamofire
для выполнения вызовов API. Наконец, я бы порекомендовал прочитать Codable
протокол для декодирования JSON, который API отправляет обратно. Когда вы декодируете свой JSON, вы захотите сохранить структуры где-нибудь, где ваш контроллер представления сможет их увидеть.
Чтобы использовать CocoaPods, вот хороший учебник (вы бы использовали их для Alamofire).
Ваш менеджер данных будет выглядеть примерно так (я буду использовать NSObject
для простоты, но вы можете просто создать свой собственный класс):
struct Shows: Codable {
// Whatever the API sends back, you've got to map it here
}
class DataManager: NSObject {
var shows: [Shows] = [] // empty array of shows to start
func methodToGetAPIResponse() {
// Alamofire call & JSON decoding here
// Once you get a valid response, shows = try JSONDecoder().decode...
}
}
Вы могли бы так что-то подобное для вашего DataManager
по вашему мнению класс контроллера:
let dataManager = DataManager()
Затем в ваших методах UITableViewDataSource, numberOfRowsAtIndexPath
было бы return dataManager.shows.count
а также cellForRowAtIndexPath
вы бы заполучили объект для заполнения ваших ярлыков следующим образом:
let show = dataManager.shows[indexPath.row]
Во всяком случае, этого должно быть достаточно, чтобы вы начали. Удачи! Постарайтесь быть более детальным с вашими вопросами в будущем.