swiftUI中的问题,尝试使用列表中的图像

时间:2020-05-25 10:28:20

标签: swift swiftui

view model

the list

the problem

您好,在上面的那些图片中,我想使用通过使用视图模型在无数个视图中查看图像的列表。我认为的问题是我没有使用视图模型第19行中的好用语。由于我使用的措辞,它说“ Catego”没有成员“ im”,但实际上列表中有一个名为im的成员。

viewModel:

import Foundation
 import FirebaseAuth
 import Firebase
 import FirebaseStorage
import SwiftUI


 class CameraViewModel: ObservableObject {

     @Published var caption: String = ""
    var catt : [Catego] = categoData
     @Published var image: Image = Image(systemName: IMAGE_PHOTO)
     @Published var isLoading = false
     var imageData: Data = Data()
     var errorString = ""


     @Published var showAlert: Bool = false
     @Published var showImagePicker: Bool = false


     func sharePost(completed: @escaping() -> Void,  onError: @escaping(_ errorMessage: String) -> Void) {
        if !caption.isEmpty && !imageData.isEmpty  {
              //AuthService.signupUser(username: username, email: email, password: password, imageData: imageData, onSuccess: completed, onError: onError)
            Api.Post.uploadPost(caption: caption, imageData: imageData,catt: catt, onSuccess: completed, onError: onError)

           } else {
               showAlert = true
               errorString = "Please fill in all fields"
           }
}
}

列表:

struct Catego: Codable,Hashable, Identifiable{
    var id = UUID()
    var im : String
    var title : String

}

var categoData  = [
    Catego(im: (IMAGE_CATEGORIE_BAG),title: "Plastic Bag"),
    Catego(im: (IMAGE_CATEGORIE_BOTTLE), title: "Plastic Bottle"),
    Catego(im: (IMAGE_CATEGORIE_FILTER), title: "Cigarette Filter"),
    Catego(im : (IMAGE_CATEGORIE_CAN), title: "Aluminium Can"),
    Catego(im: (IMAGE_CATEGORIE_BAGC),title : "Paper Bag"),
    Catego(im: (IMAGE_CATEGORIE_CAP), title: "Bottle Cap")
]

存在问题的行:

Image(cameraViewModel.catt.im)

1 个答案:

答案 0 :(得分:0)

var catt : [Catego] = categoData

这是一个列表,您正在作为对象进行访问。您应该使用要显示其数据的索引,如下所示:

let index = 0 // Modify this as per your needs. 
Image(cameraViewModel.catt[index].im)

也就是说,如果您在列表中使用它,则可以像这样遍历数组:

List(cameraViewModel.catt) { catItem in
    Image(catItem.im)
}