Начинаю создавать iOS-приложение интернет-магазина с подключением к сайту на Woocommerce. Я хочу вставить в TableView продукты из Woocommerce через API.
Теперь я создаю приложение, симулятор запускает только белый пустой экран. В конечном результате я хочу запустить iOS-приложение с подключением к сайту на Woocommerce, но я создаю его шаг за шагом, и первым шагом сейчас я хочу сделать экран с товаром или категориями из этого магазина. Почему мое приложение для iOS показывает пустой экран, когда я пытаюсь отобразить продукты WooCommerce в TableView через API?
Совместными усилиями я поместил этот новый код в Product.swift, но не получил никакого результата:
Product.swift
import Foundation
#if canImport(FoundationNetworking)
import FoundationNetworking
#endif
// Модель продукта
struct Product: Codable {
let id: Int
let name: String
let price: String
let regular_price: String?
let sale_price: String?
let description: String?
let short_description: String?
// Игнорируем лишние поля из JSON
private enum CodingKeys: String, CodingKey {
case id, name, price, regular_price, sale_price, description, short_description
}
}
// Основной класс для работы с API
struct ProductFetcher {
static func main() {
fetchProducts(useMockData: false) // Переключите на `true` для теста
}
static func fetchProducts(useMockData: Bool) {
// 1. Проверяем URL
guard let url = URL(string: "https://wp-json/wc/v3") else {
print("Invalid URL")
return
}
// 2. Готовим авторизацию
let consumerKey = "ck_3125"
let consumerSecret = "cs_707ff6"
let loginString = "\(consumerKey):\(consumerSecret)"
guard let loginData = loginString.data(using: .utf8) else {
print("Failed to encode credentials")
return
}
let base64LoginString = loginData.base64EncodedString()
// 3. Формируем запрос
var request = URLRequest(url: url)
request.httpMethod = "GET"
request.setValue("Basic \(base64LoginString)", forHTTPHeaderField: "Authorization")
// 4. Выполняем запрос или используем mock-данные
if useMockData {
useMockDataToDecode()
} else {
performNetworkRequest(request)
}
}
// Функция для работы с mock-данными
static func useMockDataToDecode() {
let mockJSON = """
[
{
"id": 99,
"name": "Premium Coffee Mug",
"price": "15.99",
"regular_price": "15.99",
"sale_price": "",
"description": "A stylish coffee mug for everyday use.",
"short_description": "Pick 6."
}
]
"""
guard let mockData = mockJSON.data(using: .utf8) else {
print("Failed to create mock data")
return
}
do {
let products = try JSONDecoder().decode([Product].self, from: mockData)
print("Mock products: \(products)")
} catch {
print("Decoding error with mock data: \(error)")
}
}
// Функция для сетевого запроса
static func performNetworkRequest(_ request: URLRequest) {
let task = URLSession.shared.dataTask(with: request) { data, response, error in
// Обработка ошибки сети
if let error = error {
print("Network error: \(error.localizedDescription)")
return
}
// Проверка HTTP-статуса
guard let httpResponse = response as? HTTPURLResponse,
(200.. Void) {
let endpoint = "\(baseURL)/products"
let urlString = "\(endpoint)?consumer_key=\(consumerKey)&consumer_secret=\(consumerSecret)"
guard let url = URL(string: urlString) else {
completion(nil)
return
}
URLSession.shared.dataTask(with: url) { data, response, error in
if let error = error {
print("Ошибка: \(error.localizedDescription)")
completion(nil)
return
}
guard let data = data else {
completion(nil)
return
}
do {
let products = try JSONDecoder().decode([Product].self, from: data)
completion(products)
} catch {
print("Ошибка декодирования: \(error.localizedDescription)")
completion(nil)
}
}.resume()
}
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... p-with-api
Нет продуктов или категорий в ViewController в TableView в приложении iOS с API WooCommerce ⇐ IOS
Программируем под IOS
1764889412
Anonymous
Начинаю создавать iOS-приложение интернет-магазина с подключением к сайту на Woocommerce. Я хочу вставить в TableView продукты из Woocommerce через API.
Теперь я создаю приложение, симулятор запускает только белый пустой экран. В конечном результате я хочу запустить iOS-приложение с подключением к сайту на Woocommerce, но я создаю его шаг за шагом, и первым шагом сейчас я хочу сделать экран с товаром или категориями из этого магазина. Почему мое приложение для iOS показывает пустой экран, когда я пытаюсь отобразить продукты WooCommerce в TableView через API?
Совместными усилиями я поместил этот новый код в Product.swift, но не получил никакого результата:
[b]Product.swift[/b]
import Foundation
#if canImport(FoundationNetworking)
import FoundationNetworking
#endif
// Модель продукта
struct Product: Codable {
let id: Int
let name: String
let price: String
let regular_price: String?
let sale_price: String?
let description: String?
let short_description: String?
// Игнорируем лишние поля из JSON
private enum CodingKeys: String, CodingKey {
case id, name, price, regular_price, sale_price, description, short_description
}
}
// Основной класс для работы с API
struct ProductFetcher {
static func main() {
fetchProducts(useMockData: false) // Переключите на `true` для теста
}
static func fetchProducts(useMockData: Bool) {
// 1. Проверяем URL
guard let url = URL(string: "https://wp-json/wc/v3") else {
print("Invalid URL")
return
}
// 2. Готовим авторизацию
let consumerKey = "ck_3125"
let consumerSecret = "cs_707ff6"
let loginString = "\(consumerKey):\(consumerSecret)"
guard let loginData = loginString.data(using: .utf8) else {
print("Failed to encode credentials")
return
}
let base64LoginString = loginData.base64EncodedString()
// 3. Формируем запрос
var request = URLRequest(url: url)
request.httpMethod = "GET"
request.setValue("Basic \(base64LoginString)", forHTTPHeaderField: "Authorization")
// 4. Выполняем запрос или используем mock-данные
if useMockData {
useMockDataToDecode()
} else {
performNetworkRequest(request)
}
}
// Функция для работы с mock-данными
static func useMockDataToDecode() {
let mockJSON = """
[
{
"id": 99,
"name": "Premium Coffee Mug",
"price": "15.99",
"regular_price": "15.99",
"sale_price": "",
"description": "A stylish coffee mug for everyday use.",
"short_description": "Pick 6."
}
]
"""
guard let mockData = mockJSON.data(using: .utf8) else {
print("Failed to create mock data")
return
}
do {
let products = try JSONDecoder().decode([Product].self, from: mockData)
print("Mock products: \(products)")
} catch {
print("Decoding error with mock data: \(error)")
}
}
// Функция для сетевого запроса
static func performNetworkRequest(_ request: URLRequest) {
let task = URLSession.shared.dataTask(with: request) { data, response, error in
// Обработка ошибки сети
if let error = error {
print("Network error: \(error.localizedDescription)")
return
}
// Проверка HTTP-статуса
guard let httpResponse = response as? HTTPURLResponse,
(200.. Void) {
let endpoint = "\(baseURL)/products"
let urlString = "\(endpoint)?consumer_key=\(consumerKey)&consumer_secret=\(consumerSecret)"
guard let url = URL(string: urlString) else {
completion(nil)
return
}
URLSession.shared.dataTask(with: url) { data, response, error in
if let error = error {
print("Ошибка: \(error.localizedDescription)")
completion(nil)
return
}
guard let data = data else {
completion(nil)
return
}
do {
let products = try JSONDecoder().decode([Product].self, from: data)
completion(products)
} catch {
print("Ошибка декодирования: \(error.localizedDescription)")
completion(nil)
}
}.resume()
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79829980/no-products-or-categories-on-the-viewcontroller-in-tableview-in-ios-app-with-api[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия