2016-09-20 7 views
0

は、だから私は、オブジェクトに含まれる配列によって、オブジェクトの配列をフィルタリングする必要があるオブジェクトは、このオブジェクトに含まれている辞書の配列によって、オブジェクトの配列をフィルター

class thing { 

let list = [stuff, stuff, stuff, stuff] 

} 

class stuff { 

var name = "ugly" 

} 

ザ・ように見える

配列は、この

thingArray = [thing, thing, thing, thing] 

のように見え、私のコードは、これまでのところ、この

newArray = thingArray.filter { receipt in 

return thing.thingArray.lowercaseString.containsString(searchText.lowercaseString) 
     } 
012のように見えます

私の問題は、私がこの機能を働かせることができないということです。本当に必要なのは、オブジェクトの内部に含まれる配列によって、このオブジェクトの配列をフィルタリングする方法です。どんな助けもありがとうございます。

P.S.私はちょうど無駄にこれを試してみました:

test = thingArray.filter {$0.list.filter {$0.name.lowercaseString.containsString(searchText.lowercaseString) == true}} 

答えて

2

私が正しく理解している場合、あなたの問題は、このような何かを解決することができます:あなたはこれを行うことができ小文字を区別しない検索のケースを作りたい場合は

class thing { 

init(list: [String]) { 
    self.list = list 
} 

var list: [String] 

} 

let thingArray = [thing(list: ["one", "two", "three"]), thing(list: ["uno", "due", "tre"]), thing(list: ["uno", "dos", "tres"])] 

let searchString = "uno" 

let result = thingArray.filter { 
    $0.list.contains(searchString) 
} 

//it will print "uno", "due", "tre" 
result.first?.list 
+0

:聞かせて結果= thingArray.filter { ($ {0.list.filter $ 0.lowercased()== searchString.lowercased() } 1次回!= nilの) }完全に働いた – matsoftware

+0

。ありがとう!!!! – WikipediaBrown

+0

@PCD性能が問題であれば、 'Array'の代わりに' Set'を使ってスピードアップすることができます。 – Alexander

関連する問題