ios - 字符串:字符串?数组而不是String:String数组在SwiftUI View 中中断了ForEach?

标签 ios swift swiftui

这是我的数组:

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?
知道为什么我不能使用[String:String?]吗?

最佳答案

试试这个变体。使用Xcode 12b上的某些复制代码进行了测试。

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

关于ios - 字符串:字符串?数组而不是String:String数组在SwiftUI View 中中断了ForEach?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62535016/

相关文章:

ios - ios中uiscrollview的底部刷新控件

iOs Widget 后台更新

swift - WKWebView 底部不显示工具栏

ios - swift |使用 HSL 颜色空间而不是标准的 HSB/HSV

ios - SwiftUI - 我可以在 iPhone 上显示标签栏,在 iPad 上显示侧边栏吗?

ios - 如何禁用 iOS11 中 tableview 单元格的完全滑动

ios - UITabBar 按钮的图像大小错误

swift - 如何在 Swift 中用字符串进行文本到语音转换时产生 1-5 秒的小停顿?

ios - NavigationLink 内的图像不呈现

ios - 设计UIView,使其可以根据内容高度动态改变其高度