Arrays 如何基于id从swift上的对象数组中删除元素?
我有一个对象数组,例如Arrays 如何基于id从swift上的对象数组中删除元素?,arrays,swift,Arrays,Swift,我有一个对象数组,例如 var arrStudents = [S1,S2,S3,S4,S5] 这里s1是学生课堂的对象 class Student { var id:Int! var name:String! var address:String? var phone:Int! } 现在我想按学生id从数组中删除一条记录。请告诉我如何执行此操作 此外,我还想学习使用filter、map的所有数组操作。循环遍历数组的所有索引,并检查是否要删除匹配的id,如果是
var arrStudents = [S1,S2,S3,S4,S5]
这里s1是学生课堂的对象
class Student {
var id:Int!
var name:String!
var address:String?
var phone:Int!
}
现在我想按学生id从数组中删除一条记录。请告诉我如何执行此操作
此外,我还想学习使用filter、map的所有数组操作。循环遍历数组的所有索引,并检查是否要删除匹配的id,如果是,它将过滤掉,您可以删除该索引:-) 如果您想在一次迭代中删除多个值,您应该从最后一个索引到第一个索引开始循环,这样它就不会崩溃(越界错误)
循环遍历数组的所有索引,检查要删除的id是否匹配,如果匹配,它将过滤掉,您可以删除该索引:-) 如果您想在一次迭代中删除多个值,您应该从最后一个索引到第一个索引开始循环,这样它就不会崩溃(越界错误)
第一个Veriables名称应为小写 只需使用property
id
在数组中搜索搜索元素的索引,然后将其从student数组中删除即可
var arrStudents = [s1, s2, s3, s4, s5]
if let index = arrStudents.index(where: {$0.id == 1}) // Search id = 1 you can set any value
{
arrStudents.remove(at: index)
}
要学习,请参考以下示例:
第一个Veriables名称应为小写 只需使用property
id
在数组中搜索搜索元素的索引,然后将其从student数组中删除即可
var arrStudents = [s1, s2, s3, s4, s5]
if let index = arrStudents.index(where: {$0.id == 1}) // Search id = 1 you can set any value
{
arrStudents.remove(at: index)
}
要学习,请参考以下示例:
以小写字母开头命名类实例是Swift的惯例。顺便说一句,你应该尽可能避免使用隐式展开的选项,特别是如果你不了解选项是如何工作的。您所需要的只是为类提供一个自定义初始值设定项,或者只使用一个结构而不是一个不需要您实现初始值设定项的类。注意,您应该将电话属性定义为字符串类型
,我想学习所有数组操作
-互联网上有很多关于此的教程。下面我们来讨论具体的问题。感谢您的宝贵反馈@Leodabus可能是Swift惯例的重复,以小写字母开头命名您的类实例。顺便说一句,你应该尽可能避免使用隐式展开的选项,特别是如果你不了解选项是如何工作的。您所需要的只是为类提供一个自定义初始值设定项,或者只使用一个结构而不是一个不需要您实现初始值设定项的类。注意,您应该将电话属性定义为字符串类型,我想学习所有数组操作
-互联网上有很多关于此的教程。在这里,我们将讨论具体问题。感谢您的宝贵反馈@Leodabus可能重复的代码,不鼓励回答。顺便说一句,Swift是一种类型推断语言。无需显式设置类型<代码>自身是冗余的。temp对象声明在哪里?对不起,仍然是objective-c风格,与self保持一致。感谢您的评论:-)不鼓励使用代码型答案。顺便说一句,Swift是一种类型推断语言。无需显式设置类型<代码>自身是冗余的。temp对象声明在哪里?对不起,仍然是objective-c风格,与self保持一致。感谢您的评论:-)
var arrStudents = [s1, s2, s3, s4, s5]
if let index = arrStudents.index(where: {$0.id == 1}) // Search id = 1 you can set any value
{
arrStudents.remove(at: index)
}
struct Stu {
let id: Int
let name: String
}
let stu1 = Stu(id: 1, name: "Tom")
let stu2 = Stu(id: 2, name: "Jhon")
var arrString: [Stu] = [stu1, stu2]
//filter will give you an array with the matched value
let matchedObjectFromArray = arrString.filter { (obj) -> Bool in
return obj.id == 1 //return Stu object whose id = 1
}
//index method gives index of object if found in an array otherwise gives nil
if let indexOfObject = arrString.index(where: { (obj) -> Bool in
return obj.id == 2 // return index of Stu object whose id = 2
}) {
let removedObject = arrString.remove(at: indexOfObject)
print(removedObject.id)
}