Удалить строковый объект из массива строки - PullRequest
0 голосов
/ 14 мая 2019

Как удалить конкретный объект из массива строк. Вот мой массив строк

[
Top cities,
==================================,
Bangalore,
Mumbai,
Delhi,
----------------------------------------,
Kerla
]

Мы хотим удалить те три объекта, которые не связаны с городами.

Я пробовал приведенный ниже код, но он не удаляет все объекты. Его снимают только "Топ города"

if let idx = self.arrayValues.firstIndex(where: { ($0 as! String) .contains("Top") || ($0 as! String) .contains("======")||($0 as! String) .contains("------") }) {
                    self.arrayValues.remove(at: idx)
                }

Декодируемый класс

struct Service : Decodable {
    var name: String
    var id: String
}

struct Location : Decodable {

    enum CodingKeys : String, CodingKey {
        case locationList
    }
    var locationList : [String]?
}

extension Location {
    public init(from decoder: Decoder) throws {
        let values = try decoder.container(keyedBy: CodingKeys.self)
        locationList = try values.decodeIfPresent([String].self, forKey: .locationList)
    }
}

у нас есть два типа ответа, вы можете понять, декодируемый класс

Ответы [ 2 ]

1 голос
/ 14 мая 2019

Это равносильно принятому ответу, но, если вы хотите принять подход функционального программирования, вы можете сделать следующее:

let arrayValues = ["1","Top cities","2","======"]
let newArrayValues = arrayValues.filter { !$0.contains("Top") && !$0.contains("======") && !$0.contains("------") }

Возможно, вы захотите разделить каждыйусловия фильтрации следующим образом:

let newArrayValues = arrayValues
    .filter { !$0.contains("Top") }
    .filter { !$0.contains("======") }
    .filter { !$0.contains("------") }
0 голосов
/ 14 мая 2019

firstIndex получает индекс первого элемента только тогда, когда вам нужны все индексы, которые удовлетворяют фильтрации, вы можете легко использовать removeAll

var arrayValues = ["1","2"]
self.arrayValues.removeAll(where: { $0.contains("Top") || $0.contains("======")|| $0.contains("------") })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...