Istnieje zarówno problem z odpowiedzią GoZoner jest dla niektórych typów danych, a także nieco lepszy sposób to zrobić. Poniższe przykłady mogą to pokazać:
let animalArray: NSMutableArray = ["Dog","Cat","Otter","Deer","Rabbit"]
let filteredAnimals = animalArray.filter { $0.rangeOfString("er") != nil }
print("filteredAnimals:", filteredAnimals)
filteredAnimals: [Dog, Cat, Otter, Deer, Rabbit]
Prawdopodobnie nie taki zestaw, jakiego się spodziewałeś!
Jednak to działa prawidłowo w ten sposób, jeśli nie wpisz animalArray jako NSMutableArray:
let animalArray = ["Dog","Cat","Otter","Deer","Rabbit"]
let filteredAnimals = animalArray.filter { $0.rangeOfString("er") != nil }
print("filteredAnimals:", filteredAnimals)
filteredAnimals: [Otter, Deer]
Jednak polecam korzystania $ 0.contains() zamiast $ 0.rangeOfString()! = nil ponieważ działa w obu przypadkach i nieznacznie poprawia czytelność kodu:
let animalArray: NSMutableArray = ["Dog","Cat","Otter","Deer","Rabbit"]
let filteredAnimals = animalArray.filter { $0.contains("er") }
print("filteredAnimals:", filteredAnimals)
filteredAnimals: [Otter, Deer]
Jaki jest dokładny błąd? Co jest drukowane, jeśli spróbujesz 'NSLog (" \ (słowa kluczowe) ")'? – Undo
Zauważ, że zwracasz opcjonalne. Mam nadzieję, że to pomoże –
to nie działa daje mi błąd wspomniany powyżej: "AnyObject nie jest podtypem NSString" – Meseery