2015-02-05 2 views
1

Мне нужно проверить, не item не идентичен newItem. item type is String, тогда как newItem тип (String) и Xcode жалуется, что он не может сравниться.Сравнение равенства строк в Swift: String! = (String)

for (index, item) in enumerate(components) { 
    let newItem = cleanItem(item) 
    if newItem != nil && newItem != item { 
     // update 
    } else { 
     // delete item 
    } 
} 
+0

Что произойдет, если вы пытаетесь 'newItem [0]'? –

+0

Можете ли вы дать нам подпись 'cleanItem'? –

ответ

0

мне нужно изменить тип возвращаемого cleanItem из строки в строку ?, как это должно быть позволено вернуться ноль. Тогда все работает. Принадлежит к путанице.

+0

Поскольку вы сами решили это, вы можете либо удалить вопрос, либо, по крайней мере, обновить заголовок, чтобы иметь отношение к реальной проблеме. Это не имеет никакого отношения к сравнению String с (String), а скорее к сопоставлению String с nil. –

0

newItem является Tuple Type, так что вы должны извлечь значение перед сравнением:

if newItem.0 && newItem.0 != item {...} 
+1

В быстром это не нужно. Кортежи одного элемента идентичны самому элементу. '(String)' неотличим от 'String', и их можно сравнивать напрямую (попробуйте на игровой площадке :) –

+0

Не знал этого. Спасибо @David :) – Armin

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