переменная была написана, но никогда не использовалась в Swift 2.0 и Xcode 7

Когда я создаю переменную без String() для инициализации переменной, появляется предупреждение об ошибке, «переменная не инициализируется», такая же ошибка появляется, когда я напрямую назначаю

var username: String = usernameTextfieldSigup.text!

И когда я инициализирую переменную, используя приведенный ниже код,

var username: String = String()
username = usernameTextfieldSignup.text!

появляется предупреждение, переменная «имя пользователя» была записана, но никогда не использовалась.

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


person suisied    schedule 30.08.2015    source источник


Ответы (2)


Вы можете сначала объявить имя пользователя без значения:

var username: String 

а затем присвойте ему значение в своем инициализаторе:

// replace with your (valid) initializer
func init() {
    username = usernameTextfieldSignup.text!
}

Однако я уверен, что usernameTextfieldSignup.text не будет иметь значения, пока пользователь не предоставит значение. Поэтому в этом случае я бы рекомендовал сделать username необязательным, чтобы вы могли установить его значение, когда вам нужно:

var username: String?

а затем при настройке:

username = usernameTextfieldSignup.text

и при доступе к нему:

if let uname = username {
    // do something with the uname
}

Кроме того, предупреждение variable 'username' was written but never used, которое вы видите, вероятно, связано с тем, что вы пишете /initialise username, но на самом деле нет кода, который его читает, поэтому, согласно компилятору, это своего рода бесполезная переменная.

person donnywals    schedule 30.08.2015

Чтобы инициировать пустую строку, вы должны сделать ее явной или необязательной, например:

let string: String!
let string: String?

Вы можете сделать это с любым типом данных.

person Ted Huinink    schedule 30.08.2015
comment
Это ничего не инициализирует, оно просто сообщает компилятору, что он будет инициализирован/имеет значение в какой-то момент времени. - person donnywals; 30.08.2015