2016-01-05 4 views
-1

Я здесь новый!Фильтр iOS-NSArray с условием

У меня есть NSArray вот так ("file01_header","file01_body", "file01_xxx", ... ,"file02_header", ...).

Я профильтровать и получить 2 различных NSArrays:

  1. Array_header ("file01_header","file02_header",...)

  2. Array_body ("file01_body", "file02_body", ...)

теперь я должен вычесть из Array_header все элементы, которые имеют соответствующий в Array_body, потому что не все элементы имеют fileNN_body для fileNN_header в исходном массиве, и я должен предоставить Array_header как вывод только с элементами, которые не имеют соответствующего тела.

Как это сделать?

Спасибо!

ответ

0

Если вы используете быстрый, вы можете легко фильтровать, используя закрытие и некоторую второстепенную строку-фу.

Вот пример:

let funkyArray = ["file01_header","file01_body", "file01_xxx", "file02_header","file03_xxx"] 

let headerFilterClosure : (String) -> Bool = {fileName in 
    if fileName.containsString("header") { 
     let fileBase = fileName.componentsSeparatedByString("_")[0] 
     let fileBodyName = "\(fileBase)_body" 

     if funkyArray.contains(fileBodyName) { 
      return true 
     } 
    } 
    return false 
} 

funkyArray.filter(headerFilterClosure) 

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

Бест, Джош

+0

Спасибо за ваш ответ! Но я не использую swift, и я должен использовать этот фанковый массив. У меня нет выбора :( – UNN

Смежные вопросы