字符串:字符串?数组而不是String:String数组在SwiftUI视图中中断了ForEach?

时间:2020-06-23 12:44:03

标签: ios swift swiftui

这是我的数组:

services:
  logger:
    build:
      context: .
    image: logger:$VERSION
    container_name: logger
    environment:
      - TARGET=$TARGET
    volumes:
      - ./data:/data
    restart: unless-stopped
    networks:
      - mongodb_wnet

networks:
  mongodb_wnet:
    external: true

这是我的观点:

class Storages: ObservableObject {
    let storage = Storage.storage()
    let uid = UserAuth().uid ?? "<uid>"
    
    @Published var photos: [String:String?] = [
        "img1": UserDefaults.standard.string(forKey: "img1"),
        "img2": UserDefaults.standard.string(forKey: "img2"),
        "img3": UserDefaults.standard.string(forKey: "img3"),
    ]

如果我将struct EditProfile: View { @ObservedObject var storage = Storages() var body: some View { VStack { Text("Points") .font(Font.system(size: 21)) .fontWeight(.bold) HStack { ForEach(storage.photos.sorted(by: <), id: \.key){ (key,val) in EditableCircleImage(key: key, imgName: val) } } 字典从photos更改为[String:String?](通过放入[String:String]来防止?? ""的值-它将起作用。但是我想保留nil值,因为我需要知道数组项的值何时为零。

这是我为每个人传递的nil

struct

知道为什么我不能使用struct EditableCircleImage: View { @ObservedObject var storage = Storages() let key: String let imgName: String? 吗?

1 个答案:

答案 0 :(得分:1)

尝试此变体。在Xcode 12b上用一些复制的代码进行了测试。

ForEach(storage.photos.sorted(by: { $0.key < $1.key }), id: \.key){ (key,val) in
    EditableCircleImage(key: key, imgName: val)
}