Ahs*_*iaz 3 nsmutablearray ios swift
我有一个NSMutableArray它自己里面有很多数组。在所有索引处的每个数组中,它们进一步具有下面给出的类的自定义对象。
Class User:NSObject{
var name = ""
var userName = ""
var email = ""
var age = 0
var gender = ""
var
}
Run Code Online (Sandbox Code Playgroud)
我想根据两个对象过滤这个嵌套数组。例如,如果用户在 searchBar 中键入一些文本并检查该嵌套数组中的文本,如果该文本与名称或用户名或两者匹配。
let nestedArray: [[User]] = [[user1, user2], [user3], [user4, user5]]
let searchName = "foo"
let filteredArray = nestedArray.map({
return $0.filter({ $0.name == searchName })
}).filter({ $0.count > 0 })
Run Code Online (Sandbox Code Playgroud)
这是一种纯函数式方法,它会生成一个新的嵌套数组,该数组仅包含具有匹配用户的数组,并且这些数组也将仅包含匹配的用户。
一些建议
struct User {
let name: String
let userName: String
let email: String
let age: Int
let gender: String
}
Run Code Online (Sandbox Code Playgroud)
NSMutableArray是一个 Objective-C 类。您可以通过 Swift 访问它,但应该使用 Swift 数组结构。它速度更快,并且作为一种值类型,可以防止与访问共享对象的代码的多个部分相关的错误。
现在给定一个数组的数组User
let data: [[User]] = ...
Run Code Online (Sandbox Code Playgroud)
和一个关键字
let keyword: String = ...
Run Code Online (Sandbox Code Playgroud)
你可以过滤你的数据写入
let matchingUsers = data
.flatMap { $0 }
.filter { $0.name.range(of: keyword) != nil || $0.userName.range(of: keyword) != nil }
Run Code Online (Sandbox Code Playgroud)
NowmatchingUsers是一个数组,User(s)其中name或username包含keyword。
let textToSearch:String = "some text"
for nestedArray in myArray {
for item:User in nestedArray
{
if user.name.contains(textToSearch) || user.userName.contains(textToSearch)
{
print("found")
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9839 次 |
| 最近记录: |