ios - 无法从数组中删除元素
问题描述
我的文本字段中有三个电子邮件 ID。这三封电子邮件也存储在一个名为feedbackEmailsArray
. 这些电子邮件 ID 也以逗号分隔。
但是如果我不想要电子邮件,那么当我单击退格按钮并完全删除电子邮件 ID 时,我还希望将其从我的feedbackEmailsArray
.
我怎样才能做到这一点..?
编辑 1:这就是我删除电子邮件 ID 的方式:
if let char = string.cString(using: String.Encoding.utf8) {
let isBackSpace = strcmp(char, "\\b")
if (isBackSpace == -92) {
//Backspace was pressed
}
}
解决方案
试试这个。
首先,您将文本字段中的字符串拆分为基于“,”的部分。然后我们清除feedbackEmailsArray
然后将电子邮件重新添加到feedbackEmailsArray
validateEmail
将检查当前字符串是否为有效电子邮件,如果其有效电子邮件,则将其添加到数组中。validateEmail
如果您想在程序的任何地方使用它,可以将其设为全局函数或静态函数。
func validateEmail(email:String) -> Bool {
let emailFormat = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}"
let emailPredicate = NSPredicate(format:"SELF MATCHES %@", emailFormat)
return emailPredicate.evaluate(with: email)
}
var emailIds = yourtextfield.text
var emailIdsArr = emailIds.split(separator: ",")
feedbackEmailsArray.removeAll()
for i in(0..<emailIdsArr.count) where emailIdsArr.indices.contains(i)
{
if validateEmail(email:emailIdsArr[i]) == true
{ feedbackEmailsArray.append(emailIdsArr[i]) }
}
解释:@testname 该validateEmail
函数检查您输入的内容是否为有效格式,即“abc@abc.com”。现在,每次您在该电子邮件字段中退格时,emailIds
变量都会获得整个字符串 (abc@abc.com,bcd@bcd.com,asd@a)。在此字符串中,asd@a 不是有效的电子邮件。现在emailIDs.split
将根据字符上的数字将字符串拆分为emailIds
变量,
。这些存储在emailIdsArr
asemailIdArr[0],emailIdArr[1],emailIdArr[2]...
for 循环emailIdArr
使用 emailIdArr.count 获取 中的索引总数。这where emailIdsArr.indices.contains(i)
是检查索引是否有效的简单检查。只是为了使它防崩溃(@iOSDev 添加到我的答案中)。
现在validateEmail
被调用,我们将参数作为索引处的字符串emailIdsArr[i]
(例如 i = 5 然后 index = 5 ,因此 validateEmail(email:5@5.com) 将返回 true,因为它是 emailId 格式)
validateEmail
是一个布尔函数,如果字符串是 emailID 格式,则返回 true,否则返回 false。
因此,如果validateEmail
返回 true,则该电子邮件将附加到feedbackEmailsArray
.
由于我们使用 append 并且 emailId 的数量可以随时更改,因此每次调用整个函数时都必须清除整个数组,因此feedbackEmailsArray.removeAll()
放置在 for 循环的外部和上方。
推荐阅读
- hibernate - Hibernate 无法延迟初始化集合
- javascript - 在 Node.js 之后,javascript 仍然是客户端脚本语言吗?
- pyspark - 使用 pyspark 不在列表中时插入新列
- swift - 为什么修改 NavigationLink 的标签会改变 SwiftUI 中显示的 View?
- node.js - 在 IntelliJ 中调试 Node.js 时缺少线程数据
- sql - SQL - 按组总结乘法的结果
- c# - C# .NET Core 托管 Blazor WebAssembly - 将其他客户端添加到 .Server 项目 API
- azure-functions - 消费计划的 Azure Functions 超时超过 10 分钟
- html - 如何使用 nginx 修复相对 url?
- python - 如何使用python从API中获取数据