【发布时间】:2022-09-24 21:19:36
【问题描述】:
这是我的模特
进口基金会
public struct Welcome: Decodable{ public let userslist: [Userslist] } public struct Userslist: Decodable, Hashable{ public let full_name: String public let partner_media: [PartnerMedia] public init( partner_media: [PartnerMedia]) { self.partner_media = partner_media } } public struct PartnerMedia: Decodable , Hashable{ public var id = UUID() public let url: String public init( url: String) { self.url = url } }这是我的模型视图。
class PublisherModelVM: ObservableObject { @Published var datas = [PartnerMedia]() let url = \"https://alibrary.in/api/publisherList\" init() { getData(url: url) } func getData(url: String) { guard let url = URL(string: url) else { return } URLSession.shared.dataTask(with: url) { (data, _, _) in if let data = data { do { let results = try JSONDecoder().decode(Welcome.self, from: data) DispatchQueue.main.async { self.datas = results.userslist `//Cannot assign value of type \'[Userslist]\' to type \'[PartnerMedia]\' what should I write for getting proper response` } } catch { print(error) } } }.resume() } }我想获取 url 和 full_name 并设置为 View
struct PublisherListView: View{ @StateObject var list = PublisherModelVM() var body: some View{ ScrollView(.horizontal,showsIndicators: false){ ForEach(list.datas, id: \\.id){ item in Text(item.full_name) AsyncImage(url: URL(string: item.url)){image in image .resizable() .frame(width: 235, height: 125).cornerRadius(8) }placeholder: { Image(systemName: \"eye\") .resizable() .frame(width: 235, height: 125).cornerRadius(8) } } } } }这个错误显示在我的 Xcode 中无法分配类型 \'[Userslist]\' 的值 键入 \'[PartnerMedia]\'请帮我。谁能帮我推荐API相关的完整详细信息 课程,并提前感谢您
-
根据您的模型,
results.url是Userslist的数组,datas是PartnerMedia的数组,所以您看到它们不一样,对吧?如果您有 2 个用户列表,并且每个用户列表有 3 个合作伙伴媒体,您想要一个包含 6 个合作伙伴媒体的数组吗?如果是,您可以使用flatMap()来执行此操作,或者使用手动 for 循环从您的回复中仅检索 partnerMedias。 -
该代码无法生成该编译错误。发布给您带来问题的实际代码。
-
self.datas = results.userslist无法将类型 \'[Userslist]\' 的值分配给类型 \'[PartnerMedia]\'@JoakimDanielson 和 @Larme 为这个错误感到抱歉。我应该在编码部分写什么请帮助我。 -
请解决您的问题,而不是在 cmets 中发布正确的代码。除非您告诉我们您想要做什么,否则我们无法告诉您如何解决它,请再次阅读@Larme 的评论并回复它。