Имам няколко обекта
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.
}
}