0
В Swift 2.3 я имел следующий код:Получить строку из объекта Swift 3
func getMyName() -> String {
return NSUserDefaults.standardUserDefaults().objectForKey("account")!["name"] as! String
}
Теперь я пытаюсь преобразовать этот код Swift 3, но я борюсь с этой ошибкой:
Type 'Any' has no subscript members
Вот мой перенесенный код:
func getMyName() -> String {
return UserDefaults.standard.object(forKey: "account")!["name"] as! String
}
@Leo Dabus Спасибо за помощь! Это работает. Не могли бы вы объяснить эту ошибку более подробно? К сожалению, я также получаю эту ошибку для: 'data [0] [" fooBar "] as! String' ('data' - массив). –
UserDefaults.standard.object (forKey :) возвращает объект типа Any, который может быть словарем или нет. Вы можете использовать objectForKey, но вам нужно было бы отличить от Any до [String: Any], чтобы иметь возможность использовать индекс словаря. –
, если ваши данные являются Array из любого '[Any]' вы можете получить доступ к первому элементу данных и передать его из Any в словарь '[String: Any]', как следует: (data.first as? [String: Any])? ["fooBar"] как? Строка? "" ' –