【发布时间】:2016-08-31 10:47:20
【问题描述】:
我有一个名字数组:
var namesArray = ["Bert","Tony","Phil","George", "David"]
然后我有一个 Person 对象数组:
var personsArray: [Person]
我的 Person 类的 sn-p 是:
class Person {
var name: String
...some code omitted...
}
我正在寻找一种方法来过滤我的 Persons 对象数组,使其仅包含在 namesArray 中找到的 Person。
我考虑在数组上使用.filter,但我需要循环两个数组。
let filterByNameArray = persons.filter({
($0.name == //string)!
})
但我认为这是不正确的,因为我还需要遍历 names 数组。我使用双 for 循环解决了我的问题:
var pArray: [Person] = []
for person in personsArray {
for nameString in namesArray {
if person.name == nameString {
pArray.append(person)
}
}
}
但是,这很丑陋并且使用了大量的 CPU,所以我的问题是,有没有更有效的方法来做到这一点? :) 我确定有。
【问题讨论】:
-
出于好奇,你为什么要继承
NSObject? -
@TimVermeulen 没问题,我将
NSObject子类化,这样我就可以将一个Person对象与另一个对象进行比较。 -
不要那样做。改为实现
Equatable协议。 -
@TimVermeulen 感谢您的提示。我现在刚开始使用 Swift,所以我有很多东西要学。 :)
标签: ios arrays swift filter comparison