iOS Swift Стоит ли пытаться удалять объекты из массива Swift при фильтрации? - PullRequest
0 голосов
/ 23 октября 2018

У меня есть табличное представление с 30 строками.Есть 10000 точек данных, которые упорядочены в хронологическом порядке.Каждая ячейка табличного представления извлекает около 300 точек данных на основе предложения фильтра.Я не видел эквивалента «removeObjectsInArray» для массивов Swift removeObjects (in:)

  • Нужно ли конвертировать / приводить массив swift в NSMutableArray, чтобы иметь возможность удалять объектыиз массива?
  • Стоит ли пытаться удалить объекты из массива swift?

Я не уверен, будет ли обработка массивов в Swift перераспределять весь массив,вызывая больший удар по производительности, чем при уменьшении размера массива.

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Лучше не делать кастинг, чтобы делать то, что можно сделать с помощью чистого быстрого подхода.

Вот пример:

    var mainArraySwift: [String] = []
    mainArraySwift.append("a")
    mainArraySwift.append("b")
    mainArraySwift.append("c")
    mainArraySwift.append("d")
    mainArraySwift.append("e")
    print(mainArraySwift)

    var arrayToBeRemoved: [String] = []
    arrayToBeRemoved.append("a")
    arrayToBeRemoved.append("b")
    arrayToBeRemoved.append("c")
    print(arrayToBeRemoved)

    mainArraySwift.removeAll { (value) -> Bool in
        return arrayToBeRemoved.contains(value)
    }
    print(mainArraySwift)

Вывод:

["a", "b", "c", "d", "e"]
["a", "b", "c"]
["d", "e"]

Не точное совпадение с методом NSMutableArray, но это что-то вас интересует.

0 голосов
/ 23 октября 2018

Поставленный вопрос слишком широкий / расплывчатый.Вы даже не дали достаточно информации, чтобы указать, в чем проблема, то есть, почему вы считаете, что вам нужно что-то удалить из массива точек данных.Если вам нужен конкретный совет по эффективности, покажите массив (или, по крайней мере, опишите его) и то, что от него требуется каждой ячейке.

Что касается табличных представлений , ключевой элемент информацииВы должны иметь в виду, что вызов cellForRowAt: должен иметь возможность мгновенно получить данные .Таким образом, вам определенно не следует выполнять какую-либо фильтрацию в самой cellForRowAt:.Вам нужно спроектировать вещи так, чтобы всегда было 30 массивов (или что-то еще), соответствующих вашим 30 строкам, готовых и ожидающих данных для каждой строки мгновенно .

Но что касается Как сделать это, вы не предоставили никакой информации о природе и форме массива точек данных или операциях фильтрации, поэтому невозможно сказать, есть ли какая-либо эффективность, которая будет достигнута в этой области.Возможно, то, что вы делаете, не является неэффективным.Возможно, массив не лучшая модель данных.Невозможно сказать, потому что вы не дали никакой информации.(Вы, конечно, должны не приводить к NSMutableArray для этой цели, хотя - какой бы ни была "цель".)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...