首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >上一个选取器中的选取器值- CoreData/SwiftUI

上一个选取器中的选取器值- CoreData/SwiftUI
EN

Stack Overflow用户
提问于 2021-01-13 20:40:05
回答 1查看 46关注 0票数 0

我有一个在屏幕上有多个选择器的SwiftUI表单。第一个步骤是从存储在Core Data中的数据库中选择一个团队。这些球队中的每一个都与玩家有一对多的关系。以下是实体:

播放器

团队

在我的内容视图中,我使用一个fetch请求从Core Data中获取所有团队,然后我将遍历它们以完成我的选择器。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@FetchRequest(sortDescriptors: [])
private var teams: FetchedResults<Team>

@State var teamSelected = 0

var body: some View {
    NavigationView{
        Form{
            Section(header: Text("Team Selection")){
                Picker(selection: $teamSelected, label: Text("Team Select")){
                    ForEach(0..<teams.count){ team in
                        Text("\(teams[team].name ?? "Unknown")")
                    }
                }
            }
        }
        .navigationBarTitle("Team Selection")
    }
}

然后我想在下面有多个选择器,允许你从特定的球队中选择一个单独的球员。我已经尝试了几种方法,但一直没有找到正确的解决方案,而且它们似乎都太过冗长和陈词滥调。我的尝试如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Picker(selection: $number1, label: Text("#1")){
    ForEach(0..<teams[teamSelected].people!.count){player in
        Text(player.name)
    }
}

有什么想法吗?我希望第二个选取器易于复制,因为我最终会非常需要它

EN

回答 1

Stack Overflow用户

发布于 2021-01-13 22:21:47

下面的方法会起作用吗?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Picker(selection: $selectedPlayerIndex, label: Text("#1")){
    ForEach(0..<teams[teamSelected].people!.count){playerIndex in
        Text(teams[teamSelected].people![playerIndex].name)
    }
}

因此,对于每个球员索引,您将创建一个文本,其中包含该索引处的球员的名称。

如果你经常需要它,你可以为它创建一个结构:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
struct PlayerPicker: View {
    var team: Team
    @Binding var selectedPlayerIndex: Int

    var body: some View {
        Picker(selection: $selectedPlayerIndex, label: Text("#1")){
            ForEach(0..<team.people!.count){playerIndex in
                Text(team.people![playerIndex].name)
            }
        }
    }
}

然后你可以像这样使用它:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@FetchRequest(sortDescriptors: [])
private var teams: FetchedResults<Team>

@State var teamSelected = 0
@State var selectedPlayerIndex: Int

var body: some View {
    NavigationView{
        Form{
            Section(header: Text("Team Selection")){
                Picker(selection: $teamSelected, label: Text("Team Select")){
                    ForEach(0..<teams.count){ team in
                        Text("\(teams[team].name ?? "Unknown")")
                    }
                }

                PlayerPicker(team: teams[teamSelected], selectedPlayerIndex: $selectedPlayerIndex)
            }
        }
        .navigationBarTitle("Team Selection")
    }
}

这是一个非常干净的解决方案;一点也不麻烦。

我无法真正测试这段代码,也有一段时间没有用SwiftUI编写代码了,所以如果我在什么地方犯了错误,请原谅。但毫无疑问,您已经领会了其中的含义。:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65709462

复制
相关文章
用curl命令通过smtp协议发送邮件
为啥我要用curl来发邮件呢?主要是服务器不是邮件服务器,也没有装sendmail、postfix这类邮件服务,有时写一些脚本会用邮件提醒,这时候用curl就非常方便了。
用户2323866
2021/06/23
5.1K0
jenkins 邮件_邮件发送协议邮件接收协议
前面已经实现在jenkins上展示html的测试报告,接下来只差最后一步,把报告发给你的领导,展示你的劳动成果了。
全栈程序员站长
2022/09/20
2.4K0
jenkins 邮件_邮件发送协议邮件接收协议
如何通过jQuery发送AJAX?
contentType:发生请求时的内容编码类型(application/x-www-form-urlencoded)
切图仔
2022/09/08
1.2K0
PHP 通过api发送邮件
免费的强大的接口:https://sendcloud.sohu.com http://sendcloud.sohu.com/doc/email/code/#php 文档的事例代码,点击下图红色表示框
简单、
2018/07/18
2.9K0
通过邮箱发送html报表
前言 需求是发送邮件时, 可以将报表正文贴到邮件里, 可以正常复制选中报表内容. 目前的做法是简单粗暴的转成了一张图片, 这样效果显然是很糟糕的. 今天看到邮箱里可以预览Word, Excel, F1
用户1216491
2018/01/24
2.4K0
Golang 通过 smtp 发送邮件
package main import( "fmt" "net/smtp" "encoding/base64" ) //html,plain func SendMail( title,user,pswd,smtpserver,port,from,to,subject,body,format string ) error { bs64 := base64.NewEncoding("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
李海彬
2018/03/20
1.4K0
UDP协议源码解析之发送
UDP不是面向连接的协议,发送数据的时候指定目的地址的信息即可以发送。下面是入口函数的代码。
theanarkh
2019/03/06
1.2K0
System.Net.Mail.SmtpClient通过SSL/TLS协议发送邮件失败问题解决
通过System.Net.Mail使用SSL协议发送邮件失败并报错 System.Net.Mail.SmtpException: Failure sending mail
KenTalk
2020/03/05
1.7K0
java实现发送邮件服务器,SMTP协议发送邮件
1.采用SMTP的邮件发送协议。准备:在网易注册一个邮箱,进入设置开启SMTP/pop3协议 2.接下来就是java代码实现了,下面都有注释,就不多做解释了。 public class mail {
生活创客
2018/01/30
4.5K0
java实现发送邮件服务器,SMTP协议发送邮件
python通过163邮箱发送邮件
from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText import smtplib import sys import os import datetime import time import MySQLdb import subprocess reload(sys) sys.setdefaultencoding("utf-8") mailto_list = ["xxx@163
py3study
2020/01/13
1.4K0
thingsboard入门通过mqtt发送数据
thingsboard支持三种传输遥测数据方式:http、mqtt以及coap,本文介绍如何通过mqtt协议推送数据到server端,
johnhuster的分享
2022/03/28
2.6K0
thingsboard入门通过mqtt发送数据
通过SmtpClient发送Exchange会议邮件
看到C#中调用Outlook API 发起会议 ,这个完全可以用SMTP方式实现的,下面我的项目中使用的代码: 对于.NET而言,从2.0开始,发邮件已经是一件非常容易的事了。而且新增了一个AlternateView,使用 AlternateView 类可以指定一个电子邮件的不同格式副本。例如,如果您发送 HTML 格式的邮件,您可能希望同时提供邮件的纯文本格式,以防一些收件人使用的电子邮件阅读程序无法显示HTML 内容。 通过使用AlternateView我们就可以实现Exchange 会议邮件的发送。核
张善友
2018/01/19
1.1K0
使用python通过http发送json
因为需要通过http协议向服务器post一些数据,于是用python写了一个相关小程序,没想到遇到了一些问题,于是就在这里将这个问题记录一下。
py3study
2020/01/13
3K0
Vue通过axios发送ajax请求
在Vue中是不支持发送ajax请求的,如果我们要在Vue中发送ajax请求,我们需借助第三方插件 常用发送ajax请求插件有两个 vue-resource和axios,Vue.js 2.0 版本推荐使用 axios 来完成 ajax 请求。
切图仔
2022/09/08
8850
Vue通过axios发送ajax请求
Vue通过axios发送ajax请求
在Vue中是不支持发送ajax请求的,如果我们要在Vue中发送ajax请求,我们需借助第三方插件 常用发送ajax请求插件有两个 vue-resource和axios,Vue.js 2.0 版本推荐使用 axios 来完成 ajax 请求。
切图仔
2022/09/08
9610
Vue通过axios发送ajax请求
委托协议栈发送接受数据响应
上一篇文章说过网络收发功能是委托操作系统实现的,这里的委托就是指委托操作系统的协议栈,和DNS查询一样,建立连接和通信上层也需要使用到 Socket的,Socket用于提供计算机之间连接通信的管道,大致示意图如下所示:
小柔
2022/10/09
6010
委托协议栈发送接受数据响应
Zigbee协议栈进行数据发送
大家好,又见面了,我是你们的朋友全栈君。Zigbee协议栈进行数据发送是调用AF_DataRequest这个函数,该函数会调用协议栈里面与硬件相关的函数最终将数据通过天线发送出去。
全栈程序员站长
2022/08/29
1.1K0
TCP协议发送/接收数据简单实现
TCP 协议是面向连接的通信协议,即传输数据之前,在发送端和接收端建立逻辑连接,再传输数据。它提供了两台计算机之间的可靠无差错的数据传输。在 TCP 连接中必须要明确客户端与服务器,由客户端向服务器发送连接请求,每次连接的创建都需要经过 “三次握手” 三次握手:TCP 协议中,在发送数据的准备阶段,客户端与服务器之间的三次交互,以保证连接的可靠
ITer.996
2022/08/30
1.4K0
TCP协议发送/接收数据简单实现
点击加载更多

相似问题

通过测量协议发送Firebase事件的GA

17

通过测量协议向跟踪目标发送帖子

13

如何通过测量协议正确地将session_id传递给GA4

12

通过测量协议为传统电子商务发送多项交易

123

如果没有ClientID,如何发送测量协议?

20
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文