2016-08-05 19 views
-2

Hallo alle Ich bin neu zu schnell und ich bin ein Fehler, wenn ich versuche Wörterbuch der in ein Array zu speichernSwift Speicher Wörterbuch in Array

Wenn Sie den Code in Spielplatz läuft es funktioniert gut, aber wenn ich den Code platzieren meine Modellklasse in bekomme ich einen Fehler

let album1:[String:String] = ["artist":"michael jackson", "title":"thriller"] 
let album2:[String:String] = ["artist":"linkin park", "title":"hybrid theory"] 
let album3:[String:String] = ["artist":"of monsters and men", "title":"beneath the skin"] 

var albums = [album1,album2,album3] 

Danke für die Hilfe

+0

Welche Art von Fehler bekommen Sie? –

+0

Wie lautet der Code für Ihre Model-Klasse? – Shades

Antwort

1

Sie benötigen Array-Eigenschaft „Instanz Mitglied‚album1‘vom Typ‚Model‘nicht verwendet werden kann“ deklarieren, ohne andere Eigenschaften mit Hilfe

var albums = [[String:String]]() 

und es Initialisierungscode bewegen bis zu einem gewissen init Methode Ihrer Klasse

init() { 
    albums = [album1,album2,album3] 
} 
+1

das hat wunderbar funktioniert. Danke – Phill360

1

ich diesen Code zu viewDidLoad hinzugefügt und keine Fehlermeldungen erhalten haben, vielleicht müssen Sie es auf irgendeine Art von Initialisierungsverfahren bewegen .

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Do any additional setup after loading the view. 


    let album1:[String:String] = ["artist":"michael jackson", "title":"thriller"] 
    let album2:[String:String] = ["artist":"linkin park", "title":"hybrid theory"] 
    let album3:[String:String] = ["artist":"of monsters and men", "title":"beneath the skin"] 

    let albums = [album1,album2,album3] 

    print(albums) 


} 
0

Sie könnten struct erstellen und dort Ihre Daten speichern. Beispiel:

struct Album { 

    // MARK: - Properties 

    let artist: String 
    let title: String 

    // MARK: - Lifecicle 

    init(withArtist artist: String, andTitle title: String) { 
     self.artist = artist 
     self.title = title 
    } 
} 

Weiter Sie können dieses verwenden, als Beispiel:

let album1 = Album(withArtist: "MJ", andTitle: "Thriller") 
... 

let albums: [Album] = [album1, ...] 

Es ist weniger fehleranfällig als Stringliterale in Wörterbücher verwenden.

+0

Sie haben das Problem nicht gelöst. Sie haben eine andere Datenstruktur vorgeschlagen (die nicht gefragt wurde) und Ihr in der OP-Umgebung geschriebenes Beispiel wird denselben Fehler ergeben. –