2016-06-11 2 views
2

У меня есть NSMutableArray, который содержит String значений. У меня есть переменная String, и я хочу проверить, содержится ли она в массиве или нет.Проверьте, содержит ли NSMutableArray заданное значение

Я попытался с помощью .contains() с String, но говорят:

Невозможно преобразовать значение типа String, ожидаемого типа аргумента ...

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

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

} 
+1

Пожалуйста, покажите свой код! И почему вы не используете собственный массив Swift? – luk2302

+0

Потому что мне нужно использовать способ индексирования массива, и я могу манипулировать им на ходу. Отредактировав мой вопрос – senty

+1

, почему вы не берете массив строк, например 'var mutableArray = [String]', а не просто проверяете, как это происходит? –

ответ

2

Несколько способов проверить существование элемента в NSMutableArray. т.е.

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

или

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

или

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

Если мы хотим, чтобы проверить наличие элемента в соответствии от версии быстрой

Swift1

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

Swift 2

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

Я до сих пор не понимаю, почему вы не можете используйте собственный массив Swift, но все в порядке.

Два возможных решения либо использовать

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

или

let contains = mutableArray.containsObject("abc") 

или

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

Если вы будете использовать нативный массив, который вы могли бы просто сделать

var array = ["123", "abc"] 
let contains = array.contains("abc") 
Смежные вопросы