简体   繁体   中英

Check if NSMutableArray contains a given value

I have an NSMutableArray that contains String values. I have a String variable and I want to check if it is contained in the array or not.

I tried using .contains() with String but it say:

Cannot convert value of type String to expected argument type...

var mutableArray = NSMutableArray()  // ["abc", "123"]
var string = "abc"

mutableArray.contains("abc") {       // above error in this line

}

Multiple ways to check element existence in NSMutableArray . ie

if mutableArray.contains("abc")  
    print("found")  
else  
    print("not found")  

or

if contains(mutableArray, "abc")   
    print("found")  

or

if mutableArray.indexOfObject("abc") != NSNotFound
  print("found")  

If we want to check existence of element according of version of swift

Swift1

if let index = find(mutableArray, "abc")  
    print(index)

Swift 2

if let index = mutableArray.indexOf("abc")  
    print(index)

I do still not understand why you cannot use a native Swift array, but okay.

Two possible solutions are to either use

let contains = mutableArray.contains { $0 as? String == "abc" }

or

let contains = mutableArray.containsObject("abc")

or

let contains = mutableArray.indexOfObject("abc") != NSNotFound

If you would use a native array you could simply do

var array = ["123", "abc"]
let contains = array.contains("abc")

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM