2015-01-29 4 views
-2

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

Qn1.

var test: NSArray = [String]() 
test[0].appendString("abc") //fatal error: Array index out of range 

Чтобы решить эту проблему, я должен был инициализировать массив с тестом = [ «»], но я был в предположении, что тест вара линии: NSArray = строка будет иметь отформатируйте ее. Это то, что я делаю правильно?

Qn2.

var test: NSArray = [String]() 
test = [["xxx", "zzz", "hhh"],["aaa", "qwe", "hyh"]] 
test[0].appendString("abc") //[Swift._NSContiguousString appendString:]: unrecognized selector sent to instance 

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

+1

Стандартная строка неизменна - вы не можете добавить к нему. –

+0

Я вижу .... спасибо за это. – winhung

ответ

1

Qn1. test фактически инициализирован, но он пуст, поэтому тест [0] выходит за пределы диапазона, поскольку нет элементов.

Qn2. appendString - это NSMutableString method, но в этом случае [0] представляет собой массив. Для того, чтобы добавить "ABC" в массиве, используйте append

test[0].append("abc") 

или +=

test[0] += ["abc"] 
+1

test + = ["abc"] –

+0

test.append ("abc") –

+0

@LeonardoSavioDabus Да, тест [0] + = ["abc"]. Спасибо –

1

Если вы только добавление строк в массивы:

// Q1 
var test = [String]() 
test.append("abc") 
// Q2 
var test = [[String]]() 
test = [["xxx", "zzz", "hhh"],["aaa", "qwe", "hyh"]] 
test[0].append("abc) 

Кроме того, если не некоторые конкретные причины, чтобы использовать NSArray, то лучше от прилипания к нативным быстрым массивам.