Во-первых, вам нужен выход для представления таблицы, поскольку вы не используете UITableViewController
@IBOutlet weak var tableView: UITableView!
, а затем внутри viewDidLoad
задаете его делегата и источник данных в качестве контроллера представления
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UISearchBarDelegate {
@IBOutlet weak var tableView: UITableView!
...
override func viewDidLoad() {
super.viewDidLoad()
...
tableView.delegate = self
tableView.dataSource = self
}
...
}
Вы можете иметь два массива. Один для всех пользователей и один для отфильтрованных пользователей по вашему состоянию (активно или нет)
var users = [User]()
var filteredUsers: [User] = users /* or just some other default value, e.g empty array */
Этот отфильтрованный массив вы можете назначить фильтрованным массивом каждый раз, когда вы нажимаете определенную кнопку и не забудьте перезагрузить данные то ваше табличное представление затем
@IBAction func ActionShowActiveUsers(_ sender: Any) {
filteredUsers = users.filter { [113].active }
tableView.reloadData()
}
@IBAction func btnShowInActiveUser(_ sender: Any) {
filteredUsers = users.filter { ![113].active }
tableView.reloadData()
}
затем в качестве массива источника данных для вашего табличного представления используйте filteredUsers
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return filteredUsers.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell()
cell.textLabel?.text = "this cell index for \(filteredUsers[indexPath.row].username)"
return cell
}
Если я определяю экземпляр локальной переменной класса на полпути вниз моя функция, не используя указатель и новый, конструктор становится обращенным ввод функции или где это определяется?
Такие переменные имеют локальный объем. Их конструктора вызывают, когда они определяются. Для локальных помех конструктора только вызывают однажды, так как помехи переживут несколько вызовов функции и возвратов. Порядок важен, и является порядком определения:
void foo() {
....
if(cond) {
...
// called here: first for f, then for b
static Foo f;
static Bar b;
}
...
Foo f; // not static: called here, in every invocation of foo.
}
Если я определяю другой экземпляр класса глобально в файле, что конструктор становится вызванным, когда исполняемый файл сначала загружается?
Да, такая переменная, как говорят, имеет статическую продолжительность хранения и объем пространства имен. Его конструктора вызывают в программе, запускаются. Порядок является порядком, он определяется в файле. Таким образом, переменная определила, позже будет иметь ее ctor названным позже. Порядок, в которых переменных, определенных в различных единицах перевода, не определяется (наблюдение за статическим фиаско порядка инициализации). Но их все называют в программе, запускаются.
Что, если несколько потоков получают доступ к .dll?
Все ставки выключены. Переменная только создается однажды. После этого, когда Вы запускаете потоки и получаете доступ к нему, переменная должна быть ориентирована на многопотоковое исполнение, или потоки должен сделать надлежащую блокировку при доступе к переменной.
Если я определяю экземпляр локальной переменной класса на полпути вниз моя функция, не используя указатель и новый, конструктор получает названный o ввод функции или где это определяется?
Когда это определяется.
Если я определяю другой экземпляр класса глобально в файле, что конструктор становится вызванным, когда исполняемый файл сначала загружается?
Да.
Что, если несколько потоков получают доступ к .dll?
DLLs обычно только загружается однажды для целого приложения – на самом деле, DLLs также имеют точку входа, которую называют потоки Вашего приложения, но инициализация глобальной переменной происходит перед этим и только однажды.
Для .dlls это зависит от компилятора и времени выполнения C (CRT). Для MSVC, выпущенного с Visual Studio 2008 SP1, CRT .dll инициализирует глобальные объекты в DLL_PROCESS_ATTACH
время и уничтожает их в DLL_PROCESS_DETACH
время, предполагая, что ничего ужасного не произошло во время DLL_PROCESS_ATTACH
.