Как использовать пользовательские данные из JSON в ForEach SwiftUI

У меня есть файл JSON с пользовательскими данными. Цель - использовать эти данные вPostCard() в ForEach(){}. Но каждый раз я пытаюсь использоватьuserвнутри я получаю эту ошибку в VStack. Невозможно определить тип возвращаемого значения сложного закрытия; добавить явный тип для устранения неоднозначности.

Моя функция конвертера JSON выглядит так:

let userResponse: [UserResponse] = load("users.json")



func load<T: Decodable>(_ filename: String, as type: T.Type = T.self) -> T {
    let data: Data

    guard let file = Bundle.main.url(forResource: filename, withExtension: nil)
        else {
            fatalError("Couldn't find \(filename) in main bundle.")
    }

    do {
        data = try Data(contentsOf: file)
    } catch {
        fatalError("Couldn't load \(filename) from main bundle:\n\(error)")
    }

    do {
        let decoder = JSONDecoder()
        return try decoder.decode(T.self, from: data)
    } catch {
        fatalError("Couldn't parse \(filename) as \(T.self):\n\(error)")
    }
}

Пользовательские типы данных:

struct UserResponse: Hashable, Codable, Identifiable {
   public var id: Int
   public var username: String
   public var avatar: String
   public var postOne: String
   public var postTwo: String
   public var postThree: String
   public var postFour: String
   public var story: String
   public var likes: Int
   public var commentNumber: Int
   public var location: String
   public var comment: String
   public var name: String
   public var followers: Int
   public var following: Int
   public var postNumbers: Int
   public var bio: String
   public var locationPic: String
}

Я инициализирую его внутри дочернего представления:

var user : UserResponse
ZStack{
   VStack{
      ForEach(userResponse){user in
         HStack(alignment: .center, spacing: 5){             
            PostCard(user: user)
               .padding(EdgeInsets(top: 0, leading: 5, bottom: 0, trailing: 0))

            PostCard(user: user)
               .padding(EdgeInsets(top: 0, leading: 0, bottom: 0, trailing: 5))

         }.shadow(color: Color("greySec"), radius: 3, x: 0, y: 0)
      }
   }.navigationBarTitle(Text(""), displayMode: .inline)
      .navigationBarHidden(true)
}

Мой PostCard структура выглядит так:

var user : UserResponse
VStack(spacing: 10){
   HStack(spacing: 5){
      VStack(spacing: 10){
         Image(user.postOne)
            .resizable().frame(height: 290)

         HStack{
            Text(user.comment)
               .font(.system(size: 12, weight: .medium))
               .padding(EdgeInsets(top: 0, leading: 5, bottom: 0, trailing: 5))
         }
      }
      .background(Color("whiteAndBlack"))
      .cornerRadius(5)
      .foregroundColor(.black)
   }
}

Вопрос: Есть ли кто-нибудь, кто знает, как использовать данные JSON внутриForEach(){}? Моя цель - создать это представление с использованием различных данных JSON для каждой открытки.

0 ответов

Другие вопросы по тегам