У меня есть этот класс Identity и словарь экземпляров из них со строками в виде ключей. Я хочу получить доступ к одному из экземпляров с помощью строки и изменить некоторые ее свойства. Я пытаюсь использовать оператор switch для доступа к экземплярам в словаре в зависимости от значения строки.Словарь быстрых классов со строками
class Identity {
let provider: String
let uid: String?
let token: String?
let name: String?
init(provider: String){
self.provider = provider
self.uid = nil
self.token = nil
self.name = nil
}
}
var identities = [String:Identity]()
identities["twitter"] = Identity(provider: "twitter")
identities["twitter"].uid = "131241241241"
identities["twitter"].name = "@freedrull"
let provider: String = "twitter"
var i: Identity? {
switch provider {
case "twitter":
return identities["twitter"] as Identity?
case "facebook":
return identities["facebook"] as Identity?
case "soundcloud":
return identities["soundcloud"] as Identity?
default:
return nil
}
}
if i != nil {
i.name = "tony"
}
Я получаю ошибку о присвоении i.name
к "Тони". Мне нужно каким-то образом отличить i
? Я думал, что это уже было.
Я считаю, что вы также можете сделать: 'i? .name =" tony "' также без трех строк кода. – Oxcug
@ theMonster Конечно, я его брошу, почему бы и нет? – matt
http://www.apeth.com/swiftBook/ch03.html#_optional – matt