2016-03-03 3 views
0

У меня есть функция, возвращающая дополнительный кортежДобавление дополнительного кортежа в массив

(Range<String.Index>?, Range<String.Index>?). 

Затем мне нужно добавить этот кортеж в массив кортежей, которые я декларирует в качестве

var arrayOftuples = [(Range<String.Index>, Range<String.Index>)]() 

Я добавляю кортеж к массиву вроде этого

arrayOftuples += [mytuple] 

Отмечено, что оператор + = не может быть применен к операндам

[(Range<String.Index>, Range<String.Index>)] 

и

[(Range<String.Index>?, Range<String.Index>?)] 

Когда я делаю заявление массива с дополнительным

var arrayOftuples = [(Range<String.Index>?, Range<String.Index>?)]() 

там больше не жалуется. Но, в конце концов, мне нужно использовать STARTINDEX и ENDINDEX из кортежей из массива, и когда я пытаюсь получить это нравится

let myrange = arrayOftuples.first!.0.startIndex..< arrayOftuples.first!.0.endIndex 

у меня жалуются, что значение типа

Range<String.Index>? 

нет участника startIndex.

Как я могу понять, если я хочу, чтобы получить STARTINDEX и ENDINDEX из кортежей, мне нужен использовать массив без опций,

var arrayOftuples = [(Range<String.Index>, Range<String.Index>)]() 

но потом мне нужно как-то только добавить, что из дополнительных кортежей, которые (nil, nil). При добавлении кортежа как это

arrayOftuples += [mytuple!] 

не принимается. Если я использую такое состояние

if mytuple != (nil, nil) 
{ 
    arrayOftuples += [mytuple] 
} 

также не работает. Жаловаться на то, что оператор! = Не может быть применен. Как решить проблему?

ответ

1

Функции возвращают опции, вероятно, по причине. Вам нужно проверить, не являются ли эти опции не ноль вначале, а затем разворачивать их и вставлять в массив. После этого у вас не должно быть никаких проблем.

Вы можете разворачивать их, как этот

if let t1 = touple.0, t2 = touple.1 { 
    let unwraped = (t1, t2) 
} 
+0

Спасибо !!! Оно работает. – VYT

Смежные вопросы