удалить значения NIL и частичное совпадение из массива - PullRequest
0 голосов
/ 01 июля 2019

У меня есть массив данных JSON, который я хочу удалить nil-объекты, и у меня есть один объект со словом Connex в длинной строке, который я хочу удалить.Это значение находится в поле $ 0.financialInstitution.

Я пытался использовать фильтр, чтобы найти элементы, которые я хочу удалить.Мои данные JSON отображаются правильно.

Я пытался работать с решением в этом посте: Проверить, содержит ли массив часть строки в Swift?

  • Я получаюошибка: невозможно преобразовать значение типа '(String) -> Bool' в ожидаемый тип аргумента '(RateDetail) -> Bool', когда я изменяю массив для использования данных JSON.

     // to remove / surpress nil values 
        let nonNilElements = rateDetails.compactMap {$0}
    
     // this does not work
    
    
     //code form post noted above, updated with my search parameters 
    and array
    
        let itemsArray = rateDetails
        let searchToSearch = "Connex"
    
        let filteredStrings = itemsArray.filter({(item: String) -> Bool in
    
            let stringMatch = item.lowercased().range(of: searchToSearch.lowercased())
            return stringMatch != nil ? true : false
        })
        print(filteredStrings)
    
    
        if (filteredStrings as NSArray).count > 0
        {
            //Record found
        }
        else
        {
            //Record Not found
        }
    

Значение в RateDetails

.RateDetail (financialInstitution: "Ваш район CU", variableRate: "0", SixMonths: "0", oneYear: "3,59 ", два года:" 3,69 ", три года:" 3,79 ", четыре года:" 3,89 ", пять лет:" 3,99 ", дата:" 2019-07-01 ")

значение, которое будет удалено:

RatesJSON.RateDetail (financialInstitution: CANNEX 30 июня 2019 г. в 00:30:20 ET ", variableRate:" 0 ", SixMonths:" 0 ", oneYear:" 0 ", twoYear:" 0 ", threeYear: "0", fourYear: "0", fiveYear: "0", дата: "2019-07-01"),

Пустое значение, которое необходимо удалить:

RatesJSON.RateDetail (financialInstitution: "", variableRate: "0", sixMonths: "0", oneYear: "0", twoYear: "0", threeYear: "0", fourYear: "0", fiveYear: "0", date: "2019-07-01 ")

  • Я хочу удалить пустые значения массива
  • удалить значение connectx, которое является частью более длинной строки, хранящейся в поле financialInstitution.

Ответы [ 2 ]

0 голосов
/ 01 июля 2019

Не знаю, смог ли я вас понять, но попробуйте что-то вроде этого ...

let resultArray = rateDetailArray.filter { rateDetail in
 return  !rateDetail.financialInstitution.isEmpty && !rateDetail.financialInstitution.lowercased().contains("Connex")
}
0 голосов
/ 01 июля 2019

Является ли itemsArray массивом RateDetails?

Если это так, ваше закрытие фильтра утверждает, что каждый элемент в массиве является строкой, что не соответствует действительности. Это RateDetail.

Итак, правильное закрытие выглядит так:

itemsArray.filter({ (item: RateDetail) -> Bool in
...
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...