Swift过滤字符串数组

Mes*_*ery 9 arrays string filtering ios swift

我在swift中过滤了一系列关键字(字符串)的麻烦,我的代码:

self.filteredKeywords=filter(keywords.allValues, {(keyword:NSString) ->                                              
  Bool in
    let words=keyword as? NSString
    return words?.containsString(searchText)
  })
Run Code Online (Sandbox Code Playgroud)

由于AnyObject不能是子类型NSString,我坚持这个!

GoZ*_*ner 16

[更新为Swift 2.0]

正如NSString免费桥接到Swift一样String,只需避免强制:

  3> ["abc", "bcd", "xyz"].filter() { nil != $0.rangeOfString("bc") }
$R1: [String] = 2 values {
  [0] = "abc"
  [1] = "bcd"
}
Run Code Online (Sandbox Code Playgroud)

但是,如果你认为allValues不是字符串:

(keywords.allValues as? [String]).filter() { nil != $0.rangeOfString("bc") }
Run Code Online (Sandbox Code Playgroud)

它返回一个可选的数组.


Adr*_*ian 1

Swift 4.2 提供了一种新方法来做到这一点:

var theBigLebowski = ["The Dude", "Angry Walter", "Maude Lebowski", "Donny Kerabatsos", "The Big Lebowski", "Little Larry Sellers"]

// after removeAll -> ["The Dude", "Angry Walter", "Donny Kerabatsos", "Little Larry Sellers"]
theBigLebowski.removeAll{ $0.contains("Lebowski")}
print(theBigLebowski)
Run Code Online (Sandbox Code Playgroud)