2016-04-04 28 views
0

Ich versuche, manipulierte Zeichenfolgen aus einer separaten Klasse in meinem ViewController zu verwenden. Um die Dinge einfach zu halten, lassen Sie uns sagen, ich habe eine String in Other.class, die ich mit stringByReplacingOccurrencesOfString ändern. Ich setze dann diesen Wert auf String in meinem ViewController.Abrufen von Zeichenfolgenwerten aus einer anderen Klasse

var name: String! 
name = "John" 

... 

func changeString { 
    name = name.stringByReplacingOccurrencesOfString("a", withString: "e") 
} 

self.mainViewController!.fakeName = name 

In meinem ViewController, verwende ich dann diese Zeichenfolge als Wert für eine Zelle Tabelle wie folgt:

var fakeName: String? 
... 
if (indexPath.row == 0) { 
      cell.nameLabel.text = fakeName! 
     } 

Aus irgendeinem Grund hält fakeName einen Nullwert zurückkehrt, und ich habe keine Ahnung, warum. Irgendwelche Ideen?

Ich bin ein Java-Entwickler, der Swift neu ist, also gewöhne ich mich nur an die Syntax. Entschuldigung, wenn diese Frage eine wirklich offensichtliche Antwort hat.

+0

Was ist Ihre Frage? Welcher Teil funktioniert nicht? –

+0

benutze push segue in viewcontroller – iOS

+0

fakeNamereturns ist ein Nullwert in meinem View-Controller. Entschuldigung, ich werde den Beitrag bearbeiten, um das zu klären. – wasimsandhu

Antwort

1

Ich denke, es funktioniert für Sie. Deklarieren Sie die Variable außerhalb der Klasse für Beispiel. Andere Dinge Sie haben eine .swift-Datei erstellt und die Variable als globale Variable deklariert.

var fakeName : String = "" 
// First Class where you change the value of name 
class ViewController : UIViewController 
{ 
    func changeString { 
    name = name.stringByReplacingOccurrencesOfString("a", withString: "e") 
} 
} 

// Other Class where you use the value of name 
class mainViewController : UIViewController 
{ 
    ...... 
if (indexPath.row == 0) { 
      cell.nameLabel.text = fakeName 
     } 
} 

// Wie pro Ihre Frage müssen Sie Ihre Variable zuweisen nicht decleare gerade nur

var fakeName: String = "" 
+0

Es muss nicht sofort zugewiesen werden, wenn es ein 'Optional' ist, es kann zu einem späteren Zeitpunkt eingestellt werden. – ColGraff

+0

Dies beantwortet meine Frage, aber das eigentliche Problem war, dass ich vergaß, 'self.table.reloadData()' aufzurufen. Danke für Ihre Mühe! :) – wasimsandhu

Verwandte Themen