/ / Достъп до собственост на собственост на обект, докато итерация над речник - бързо

Достъп до собственост на персонализиран обект, докато се прелиства над речника - swift

Имам няколко обекта

Struct object {
var title:String?
}

var one = object("green")
var two = object("black")
var three = object("blue")

Също така имам речник

var dict = ["a":[one, two], "b":[three]]

Това, което искам, е да повторя стойностите на речника и да намеря всички обекти, които започват от "b".

Въпреки че за нещо като

for (key, value) in dict {
if value.lowercaseString.containsString(searchText.lowercaseString)
}

но получавам грешка от

value of type [object] has no member "lowercaseString"

как мога да се справя с това?

Отговори:

1 за отговор № 1

вие повтаряте над речник, като го гледате ключове и стойности.

Но стойностите не са низове, а масиви от низове.

правя

import Foundation

struct object {
var title:String?
}

var one = object(title:"green")
var two = object(title:"black")
var three = object(title:"blue")

var dict = ["a":[one, two], "b":[three]]

for (key, value) in dict {
for obj in value {
if let title = obj.title {
if title.lowercaseString.containsString(searchText.lowercaseString) {
// ...
}
}
}

}

0 за отговор № 2

Вашият value е масив от обект "[object]", но не е низ, както е дефиниран от вашия код по-горе:

var dict = ["a":[one, two], "b":[three]]

Така че трябва да обработите стойността като масив от objectза да разберете какво искате.

for (key, value) in dict {
let found = value.filter({ (anObject: object) -> Bool in
return anObject.title!.lowercaseString.containsString("b")
})

if (found.count > 0) {
//you find what you want.
}
}