2017-03-03 7 views
1

Es ist eine grundlegende Frage, ich bin neu zu Swift, und dies ist eine spezifische Frage zu Struct Arrays (Struct innerhalb der Struktur)Wie rufe ich Struct innerhalb eines Struct?

Ich versuche, eine Ausgabe (TableView-Struktur mit Header als Abschnitt) wie folgt :

enter image description here

ich kann es mit Wörterbuch tun, ich versuche Arrays in struct

Structs zu machen:

struct StructSections { 
    var sectionName: String! 
    var channels: StructChannels 
    var collapsed: Bool! 

    init(sectionName: String, channels: StructChannels, collapsed: Bool = false) { 
     self.sectionName = sectionName 
     self.channels = channels 
     self.collapsed = collapsed 
    } 
} 

struct StructChannels{ 
    var channelName: String! 
    var streamURL: String! 
    var imageURL: String! 
} 

und dann Funktion, die ich schaffen Daten

func CreateRadioData() { 
    var JakartaChannels: [StructChannels] = [] 
    JakartaChannels = [ 
     StructChannels(channelName: "Prambors 102.2 FM Jakarta", streamURL: "http://masima.rastream.com/masima-pramborsjakarta", imageURL: "PramborsJakarta"), 
     StructChannels(channelName: "I-Radio 89.6 FM Jakarta", streamURL: "http://mra.rastream.com/mra_iradio", imageURL: "IRadioJakarta") 
    ] 

    var MedanChannels: [StructChannels] = [] 
    MedanChannels = [ 
     StructChannels(channelName: "KISS 105 FM Medan", streamURL: "http://live.kissfm-medan.com:8080/kissfm.mp3", imageURL: "KissFMMedan") 
    ] 



    var Sections:[StructSections] = [] 
    Sections = [ 
     StructSections(sectionName: "Jakarta", channels: JakartaChannels), 
     StructSections(sectionName: "Medan", channels: MedanChannels) 
    ] 
} 

ich in diesen Codes erhielt Fehler zu laden:

StructSections(sectionName: "Jakarta", channels: JakartaChannels), 
StructSections(sectionName: "Medan", channels: MedanChannels) 

Wie die structs StructSectionsJakartaChannels und MedanChannels innerhalb der Struktur nennen?

+1

erstellen Anordnung von Kanälen wie: var Kanäle: [StructChannels] in StructSections Abschnitt – iDhaval

+1

Verwendung camelcase für Namen von Variablen und Funktionen. – Mark

+0

Warum machen Sie ein neues Array 'var x: [StructSections] = []', und überschreiben Sie es sofort mit einem neuen Array? 'x = [a, b, c]'? – Alexander

Antwort

4

In dieser Anweisung übergeben Sie Array von StructChannels, aber es wird erwartet, nur StructChannels ref.

StructSections(sectionName: "Jakarta", channels: JakartaChannels) 

so erstellen StructSections Eigenschaft Kanäle Array von StructChannels.

struct StructSections { 
var sectionName: String! 
var channels: [StructChannels] 
var collapsed: Bool! 

init(sectionName: String, channels: [StructChannels], collapsed: Bool = false) { 
    self.sectionName = sectionName 
    self.channels = channels 
    self.collapsed = collapsed 
} 

}

+1

oops ... ja, ich baue es und es funktioniert !!! –

+0

Schauen Sie sich diese Zeile an. init (sectionName: String, channels: [StructChannels], collapsed: Bool = false) {..} In Init-Parametern wird auch [StructChannels] erwartet. – Sahil

+0

Vielen Dank –