Size: a a a

2021 February 21

D

D_lind in SwiftBook
Всем привет, может кто знает как использовать codable когда в json передаётся массив, где  под одним ключом передаются разные типы данных (пробовала использовать Any, в качестве типа данных, но так все ломается)?
источник

Д

Дмитрий in SwiftBook
D_lind
Всем привет, может кто знает как использовать codable когда в json передаётся массив, где  под одним ключом передаются разные типы данных (пробовала использовать Any, в качестве типа данных, но так все ломается)?
Скиньте сюда json
источник

D

D_lind in SwiftBook
Дмитрий
Скиньте сюда json
источник

Д

Дмитрий in SwiftBook
Так это массив одинаковых моделей. Нужно создать структуру типа такого

struct Response: Codable {
let response = [ResponseData]?
}
struct ResponseData: Codable {
let amount: String?
}
источник

Д

Дмитрий in SwiftBook
Это тоже самоё, что [строчка1, строчка1]
источник

D

D_lind in SwiftBook
Дмитрий
Так это массив одинаковых моделей. Нужно создать структуру типа такого

struct Response: Codable {
let response = [ResponseData]?
}
struct ResponseData: Codable {
let amount: String?
}
Использовала очень похожее решение, компилятор говорит ждал String, а получил на вход тип Float, и не декодит
источник

D

D_lind in SwiftBook
Дмитрий
Так это массив одинаковых моделей. Нужно создать структуру типа такого

struct Response: Codable {
let response = [ResponseData]?
}
struct ResponseData: Codable {
let amount: String?
}
Может тут нужно использовать CodingKeys, только для value?
источник

Д

Дмитрий in SwiftBook
D_lind
Использовала очень похожее решение, компилятор говорит ждал String, а получил на вход тип Float, и не декодит
Тогда попробуйте вот так
struct Result: Codable {
   let result: [ResultData]?
}

struct ResultData: Codable {
   let amount: Amount?
}

enum Amount: Codable {
   case double(Double)
   case string(String)

   init(from decoder: Decoder) throws {
       let container = try decoder.singleValueContainer()
       if let x = try? container.decode(Double.self) {
           self = .double(x)
           return
       }
       if let x = try? container.decode(String.self) {
           self = .string(x)
           return
       }
       throw DecodingError.typeMismatch(Amount.self, DecodingError.Context(codingPath: decoder.codingPath, debugDescription: "Wrong type for Amount"))
   }

   func encode(to encoder: Encoder) throws {
       var container = encoder.singleValueContainer()
       switch self {
       case .double(let x):
           try container.encode(x)
       case .string(let x):
           try container.encode(x)
       }
   }
}
источник

D

D_lind in SwiftBook
Дмитрий
Тогда попробуйте вот так
struct Result: Codable {
   let result: [ResultData]?
}

struct ResultData: Codable {
   let amount: Amount?
}

enum Amount: Codable {
   case double(Double)
   case string(String)

   init(from decoder: Decoder) throws {
       let container = try decoder.singleValueContainer()
       if let x = try? container.decode(Double.self) {
           self = .double(x)
           return
       }
       if let x = try? container.decode(String.self) {
           self = .string(x)
           return
       }
       throw DecodingError.typeMismatch(Amount.self, DecodingError.Context(codingPath: decoder.codingPath, debugDescription: "Wrong type for Amount"))
   }

   func encode(to encoder: Encoder) throws {
       var container = encoder.singleValueContainer()
       switch self {
       case .double(let x):
           try container.encode(x)
       case .string(let x):
           try container.encode(x)
       }
   }
}
Какой развёрнутый ответ, спасибо, очень похоже на правду
источник

1

1nTrance in SwiftBook
Ребят, хелпаните. У меня есть переиспользуемая ячейка со стекВью, в стекВью мне нужно как то передать массив стрингов из модели, сделать 2 функции, в 1ой функции я должен передать как то массив из стрингов тот, который мне нужен. Во 2й функции другой массив. Потом показfть эту  ячейку, но 2 раза и в зависимости от indexPath.row. Как это реализовать можно ?
источник

G

Gorr in SwiftBook
Ребята всем привет !!!
Решил сменить специальность и изучить программирование. Первым языком выбрал swift.  Опыт нулевой, прям совсем нулевой. Дайте совет с чего начать, для быстрого и качественного освоения языка...
источник

ВР

Владимир Рыбант... in SwiftBook
попробуйте начать с этого https://online.swiftbook.ru/
источник

G

Gorr in SwiftBook
Спасибо большое !!!
источник

1

1nTrance in SwiftBook
Мужики, есть 1 ячейка и есть 2ая ячейка(но я ее переиспользую 2 раза, у нее есть 2 функции которые возвращают разную инфу). Как теперь в метод cellForRowAt передать все эти 3 ячейки ?)
источник

G

Gorr in SwiftBook
Ставлю на мак симулятор swift playground. Так, как живу на Чукотке 300 мб это сутки. Никто не пробовал эту игрушку?
источник

l

looneytzci in SwiftBook
пробовал, прикольная
источник

l

looneytzci in SwiftBook
но там прям азы азы
источник

G

Gorr in SwiftBook
looneytzci
но там прям азы азы
Я прям нулевой-нулевой 😅
источник

l

looneytzci in SwiftBook
ну тогда скачивай, если знаешь англ
источник

G

Gorr in SwiftBook
looneytzci
ну тогда скачивай, если знаешь англ
источник