2016-04-04 2 views
1

Есть два вопроса, первый приходит в виде желтого сообщения (предупреждение):Swift 3 вар осуждается ошибка

var parameters are deprecated and will be removed in Swift3"<BR> If I fix it, the next line "searchText = ...." 

Второй приходит с красным сообщением (ошибка)

cannot assign to value: searchText is a let constant 

Вот код:

func filterContentForSearchText(var searchText: String, scope: NSInteger) {  
     searchText = searchText.lowercaseString; 
} 

ответ

0

В переменных переменных swift 3.0 будут удалены. Это объясняется тем, что разработчики языка считают, что он может быть неоднозначным с переменными inout. Вы можете использовать затенение легко исправить это следующим образом:

func filterContentForSearchText(searchText: String, scope: NSInteger) { 
    var searchText = searchText  
    searchText = searchText.lowercaseString; 

Здесь мы назначаем локальную переменную searchText быть значение константыsearchText параметра . Из-за затенения локальная переменная - это то, на что ссылается, когда используется searchText.

+0

Спасибо за вашу помощь, почему вы добавили третью строчку? –

+0

@Jade, в этом случае его не нужно, так как 'lowercaseString' является вычисляемым var, который возвращает строку, поэтому вы можете просто назначить результат по своему усмотрению. Но в более общем случае я предположил причину, по которой вы указали 'searchText' переменную, в первую очередь, потому что вы хотите в какой-то форме преформировать ее в дальнейшем. –

+0

Спасибо Блейк –

-1

Попробуйте это:

func filterContentForSearchText(searchText: String, scope: NSInteger) {  
     var searchText = searchText.lowercaseString; 
+0

Хорошо работает ... Спасибо –

+0

Как пожелаете Блейк, извините Маноло –

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