2016-07-21 23 views
0

Ich werde eine neue Klasse erstellen, und in dieser Klasse gibt es eine berechnete Variable; so dass ich nach einer Möglichkeit, diese Variable init:Init eine berechnete Variable

import UIKit 

class Squadra: NSCoder, NSCoding 
{ 
    var nomeSquadra: String 
    var numeroCoriSquadra: Int 
    var coloreSquadra: String 
    var immagineSquadra: String 

    var sottotitoloSquadra: String 
    { 
     get 
     { 
      return "I migliori cori: \(nomeSquadra)" 
     } 
    } 

    init(nome: String, numero: Int, colore: String, immagine: String, sottotitolo: String) 
    { 
     nomeSquadra = nome 
     coloreSquadra = colore 
     numeroCoriSquadra = numero 
     immagineSquadra = immagine 
     sottotitoloSquadra = sottotitolo 
    } 
} 

offensichtlich mit dieser Codezeile Xcode gibt meine einen Compiler-Fehler (weil die var eine einzige Eigenschaft ist erhalten). Ich denke, dass ich einen Satz verwenden muss, um die Variable beschreibbar zu machen, aber ich weiß nicht, wie ich operiere, weil ich nicht genau weiß, wie get und set funktionieren.

Antwort

0

Entweder sottotitoloSquadra = sottotitolo entfernen oder einer anderen Variablen zuweisen. Selbst wenn die Zuweisung funktioniert hat, verwenden Sie niemals den Wert, der als sottotitolo für irgendetwas kommt.

0

Ich kann nützliches Verhalten nicht sehen, während Sie unabhängige Eigenschaft nomeSquadra verwenden und versuchen, Setter für sottotitoloSquadra zur gleichen Zeit zu haben. Vielleicht ist es besser, versteckte Support-Eigenschaften für berechnete Variablen in Ihrem Fall zu verwenden?

private var _sottotitoloSquadra: String 
var sottotitoloSquadra: String 
{ 
    get 
    { 
     return "I migliori cori: \(_sottotitoloSquadra)" 
    } 
    set 
    { 
     _sottotitoloSquadra = newValue 
    } 
} 

init(nome: String, numero: Int, colore: String, immagine: String, sottotitolo: String) 
{ 
    //... 
    _sottotitoloSquadra = sottotitolo 
} 
+0

Dies ist in der Nähe, aber denken Sie daran, dass die berechnete Sotto-Variable nur gelesen werden soll, also entfernen Sie besser das eingestellte Teil. Der Anfangsteil ist gut. –

0

Wenn ich Sie verstehen Klasse richtig, möchten Sie die Standard-Zeichenfolge der Variablen verwenden, wenn die init() hat einen Wert nicht bieten (I obwohl nur ich raten).

Wenn also das Team keinen bestimmten Untertitle hat, würde man einen aus dem Namen des Teams erstellen.

Ich verstehe auch, dass Sie nicht möchten, dass diese Eigenschaft geändert werden kann, nachdem das Objekt instanziiert wurde.

Wenn das der Fall ist, (ich nehme an, Sie würden eine leere Zeichenfolge für sottotitolo erhalten), können Sie eine private Variable definieren, um den bereitgestellten Titel zu halten und ihn mit einer berechneten Variable verfügbar zu machen. Der Standardwert (zusammengesetzter Titel) kann von dieser berechneten Variablen zurückgegeben werden, wenn in init() kein Titel angegeben wurde.

Nur Ihre Klasse, einschließlich der Funktion init(), kann die private Variable ändern, die das mitgelieferte sottotitolo enthält. Außerhalb dieser Quelldatei ist die private Variable überhaupt nicht zugänglich.