行VStack显示错误"实例方法‘Sheet(Item:onDismi:Content:)’要求‘Int’符合‘IDENTABLE’",但我想我没有犯任何错误?我有吗?

我感觉我的工作表出错了,我的Int应该符合‘可识别的’,但Int不是‘可识别的’,因为它是原始的?我该如何解决这个问题呢?

    struct SheetView: View {

    @State var bindingItemDiscounts: [Double] =
    [ 0.99, 0.25, 0.31, 11.99, 19.99, 0.1, 0.5]
    @State var discountMoreThanTen: Int?
    var body: some View {
    
    VStack(alignment: .leading) { <- this line
        Button {
            discountMoreThanTen = bindingItemDiscounts.count
        } label: { Text("Check Discounts") }

    }.sheet(item: $discountMoreThanTen) { newValue in
        if discountMoreThanTen ?? 0 <= 10 {
            
            List(bindingItemDiscounts, id: \.self) { discount in
                Text("Discount : \(discount)")
            }
            
        }
    }
 }
 }. 

推荐答案

您使用的是Binding<Item?>-sheet.Item是一种类型,因此它必须符合Identifiable才能唯一标识.

此外,Int在SWIFT中也不是原语.Int基本上是Type,就像您的其他自定义数据类型一样,所以您需要手动将其设置为Identifiable.

在文件中添加此扩展名将解决此问题:

extension Int: Identifiable {
  public var id: Self { self }
}

如果需要uuid(),则改用以下代码:

extension Int: Identifiable {
  public var id: String {
    return UUID().uuidString
  }
}

Ios相关问答推荐

SwiftUI文本编辑器内部滚动填充,无需文本裁剪

iOS SwiftUI需要不带箭头显示弹出窗口""

带外部笔划的圆形进度视图

为什么Reaction-Native-Vision-Camera不能与闪光灯一起使用?

如何在SwiftUI中扩展双击的可检测区域?

阿拉伯文变音符号(Harakat)在文本对齐的UILabel中未对齐

如果使用 .onAppear 设置,为什么 SwiftUI Picker 不显示正确的选定值

无法在 CollectionView 中禁用部分弹跳 - 组合布局

如何在 SwiftUI 中对表格行使用 Transferable

如何在 SwiftUI 中创建两个大小相同的正方形占据整个屏幕宽度?

Xcode14 启动时崩溃:dyld:库未加载:/usr/lib/swift/libswiftCoreGraphics.dylib

在 iPad 上删除列表的顶部和底部行

使用 Vim 代替(或与)Xcode 进行 iOS 开发

iOS:应用程序在安装应用程序时未征求用户许可.每次都获得 kCLAuthorizationStatusNotDetermined - Objective-c & Swift

如何使用 Swift 从assets资源 中加载特定图像

在 Xcode 5 中为超级视图添加间距约束

在原生和 phonegap 之间挣扎,简单的应用需求

如何在 Objective-C 中组合两个数组?

iOS:如何从 URL 调试新启动应用程序

由于 GoogleSignIn、AdMob 提交应用程序时 iOS 10 GM 发布错误应用程序try 在没有使用说明的情况下访问隐私敏感数据