我想按 startYear 搜索特定的美国总统,并且我尝试在 Swift 4 中使用过滤器。但我无法让它工作。我故意使用 Codable 协议(protocol)。
struct USPresidents: Codable {
let FName: String
let LName: String
let startYear: Int
let endYear: Int
}
let widroww = USPresidents(FName: "Widrow", LName: "Wilson", startYear: 1913, endYear: 1921)
let fdr = USPresidents(FName: "Frankly", LName: "Roosevelt", startYear: 1933, endYear: 1945)
let jkf = USPresidents(FName: "John", LName: "Kennedy", startYear: 1961, endYear: 1963)
let dde = USPresidents(FName: "Dwight", LName: "Eisenhowser", startYear: 1953, endYear: 1961)
let anj = USPresidents(FName: "Andrew", LName: "Jackson", startYear: 1865, endYear: 1869)
let gew = USPresidents(FName: "George", LName: "Washington", startYear: 1789, endYear: 1796)
var allPresidents = [USPresidents]()
allPresidents.append(contentsOf: [fdr,jkf,dde,anj,gew])
let searchFor = [1953]
let result = allPresidents.filter { $0.startYear.contains({ $0.searchFor.contains($0) })
print("\n\nPresident in 1953 was: = \(result)\n\n")
最佳答案
您希望过滤器查看 searchFor
是否包含 startYear
。
let result = allPresidents.filter { searchFor.contains($0.startYear) }
关于arrays - iOS 结构可编码和过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49216584/