小编sid*_*sid的帖子

在 SwiftUI 中的 ForEach 中过滤 @Binding 数组 var 返回基于未过滤数组的值

我是一名 Windows C# 开发人员,刚接触 iOS/SwiftUI 开发,我想我已经陷入了困境。

我有一个带有 @Binding 变量的视图:

struct DetailView: View {
    @Binding var project: Project
Run Code Online (Sandbox Code Playgroud)

该项目是一个包含任务数组的对象。我循环遍历项目的任务以显示其名称和一个开关,其状态由任务的变量 isComplete 确定。

    ForEach(filteredTasks.indices, id: \.self) { idx in
        HStack {
            Text(filteredTasks[idx].phase)
                .font(.caption)
            Spacer()
            Text(filteredTasks[idx].name)
            Spacer()
            Toggle("", isOn: self.$filteredTasks[idx].isComplete)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我花了相当长的时间才完成这段代码,我发现我必须遵循带有“索引”选项的示例才能使切换单独处理每个任务,并确保其 isComplete 值被救了。

接下来,我想根据任务变量、阶段(其值为 Planning、Construction 或 Final)过滤任务列表。因此,我创建了 4 个按钮(每个阶段一个,然后是“所有任务”以返回完整的、未过滤的列表),经过大量的试验和错误(创建不再正确绑定的过滤数组等)。等)我尝试过这个,基本上只使用原始数组。

            List {
                ForEach(project.tasks.filter({ $0.phase.contains(filterValue) }).indices, id: \.self) { idx in
                    HStack {
                        Text(project.tasks[idx].phase)
                            .font(.caption)
                        Spacer()
                        Text(project.tasks[idx].name)
                        Spacer()
                        Toggle("", isOn: self.$project.tasks[idx].isComplete)
                    }
                }
            }
Run Code Online (Sandbox Code Playgroud)

当然,这似乎有效,因为我可以做一个测试:

    func CreateTestArray() {
        let testFilterArray = project.tasks.filter({ $0.phase.contains(filterValue) …
Run Code Online (Sandbox Code Playgroud)

arrays filter indices swiftui

6
推荐指数
1
解决办法
2632
查看次数

在 Xcode 中运行 AR 应用模板时出现错误

在 MacOS 12 beta 上运行 Xcode 13 beta,部署到运行 iOS 15 beta 的 iPad Pro 第四代。

在 Xcode 中,我使用增强现实应用程序创建一个应用程序,选择默认的 SwiftUI 界面、Swift 语言和 RealityKit 内容技术。

创建后,我绝对不会对代码进行任何更改,只需在我的 iPad 上运行即可。除了下面显示的其他错误/消息之外,我还收到许多弃用和类型不存在的错误/消息。

我对 Apple 开发环境有点陌生,所以也许我错过了一些非常基本的东西,但为什么我会在模板代码上收到这么多警告/错误?这是苹果测试版产品的典型情况吗?

2021-06-15 09:37:13.272034-0700 Test[47081:3536556] Metal GPU Frame Capture Enabled
2021-06-15 09:37:13.272264-0700 Test[47081:3536556] Metal API Validation Enabled
2021-06-15 09:37:15.828657-0700 Test[47081:3536556] [AssetTypes] Registering library (/System/Library/PrivateFrameworks/CoreRE.framework/default.metallib) that already exists in shader manager. Library will be overwritten.
2021-06-15 09:37:16.003778-0700 Test[47081:3536556] [Assets] Resolving material name 'engine:BuiltinRenderGraphResources/AR/suFeatheringCreateMergedOcclusionMask.rematerial' as an asset path -- this usage is deprecated; instead provide …
Run Code Online (Sandbox Code Playgroud)

beta xcode augmented-reality realitykit

5
推荐指数
1
解决办法
1640
查看次数

标签 统计

arrays ×1

augmented-reality ×1

beta ×1

filter ×1

indices ×1

realitykit ×1

swiftui ×1

xcode ×1