2016-09-23 4 views
0

In Swift 2.3 hatte ich den folgenden Code:des String aus dem Objekt in Swift 3

func getMyName() -> String { 
     return NSUserDefaults.standardUserDefaults().objectForKey("account")!["name"] as! String 
    } 

Nun, ich versuche, diesen Code zu Swift 3, zu konvertieren, aber ich habe Schwierigkeiten mit diesem Fehler:

Type 'Any' has no subscript members

Hier ist mein migrierten Code:

func getMyName() -> String { 
    return UserDefaults.standard.object(forKey: "account")!["name"] as! String 
} 

Antwort

2

UserDefaults eine Methode hat genau genannt dictionaryForKey dafür:

func getMyName() -> String { 
    return UserDefaults.standard.dictionary(forKey: "account")?["name"] as? String ?? "" 
} 
+0

@Leo Dabus Vielen Dank für Ihre Hilfe! Das funktioniert. Könnten Sie diesen Fehler bitte näher erläutern? Leider bekomme ich diesen Fehler auch für: 'data [0] [" fooBar "] as! String' ('data' ist ein Array). –

+0

UserDefaults.standard.object (forKey :) gibt ein Objekt vom Typ Any zurück, das ein Wörterbuch sein kann oder nicht. Sie könnten objectForKey verwenden, aber Sie müssten von Any in [String: Any] umwandeln, um den Wörterbuch-Index verwenden zu können. –

+0

Wenn Ihre Daten ein Array von Any '[Any]' sind, können Sie auf das erste Datenelement zugreifen und es von Any to Dictionary '[String: Any]' 'following' (data.first as? [String: Any]) umwandeln. ["fooBar"] als? Schnur ?? "" –

Verwandte Themen