it-swarm.com.de

'Verwendung eines nicht aufgelösten Identifikators' in Swift

Also habe ich eine App gemacht und alles hat super funktioniert. Aber heute habe ich wie üblich eine neue Klasse erstellt, und aus irgendeinem Grund kann ich in dieser Klasse nicht auf die öffentliche/globale Variable von anderen Klassen zugreifen. Alle anderen Klassen können, aber jetzt, wo ich versuche, eine neue Klasse zu erstellen, kann ich nicht. Wie würde das behoben werden?

Ich verwende Swift und Xcode 6.

Arbeiterklasse:

import UIKit
import Foundation
import Parse
import CoreData

var signedIn = true

class ViewController: UIViewController {

Neue Klasse:

import UIKit

class NewClass: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        signedIn = false

}

Aber auf signedIn = false

Ich bekomme den Fehler: 

verwendung des nicht aufgelösten Bezeichners "signedIn"

75
Apple Geek

Ein mögliches Problem ist, dass Ihre neue Klasse ein anderes Ziel oder andere Ziele als das andere hat.

Beispielsweise könnte es ein Testziel haben, während das andere nicht besteht. Für diesen speziellen Fall müssen Sie alle Ihre Klassen in das Testziel oder keine davon einschließen.

Targets

228
lchamp

Bei mir ist dieser Fehler aufgetreten, weil ich versucht habe, eine nested - Funktion aufzurufen. Das einzige, was ich tun musste, um das Problem zu beheben, war, die Funktion out in einen Bereich zu bringen, in dem sie sichtbar war.

3
Honey

'Verwendung eines nicht aufgelösten Bezeichners' in Swift kann auch passieren, wenn Sie vergessen haben, eine Bibliothek zu importieren. Zum Beispiel habe ich den Fehler:  enter image description here

In dem ich die UIKit vergessen habe

uIKit importieren

2
Cons Bulaquena

Ich habe diesen Fehler für das Mantle Framework in meinem Objective-Swift-Projekt erhalten.

  1. Überprüfen Sie, ob der Import in der Datei Bridging-Header.h vorhanden ist
  2. Ändern Sie die Zielmitgliedschaft für das Framework in der Datei Mantle.h wie in der Abbildung unten gezeigt.

Schalten Sie zwischen privater Mitgliedschaft um, bauen Sie zuerst das Projekt auf und enden Sie mit Fehlern. .__ Erstellen Sie anschließend das Projekt mit Public Membership für alle Frameworks, die für die Mantle.h -Datei erschienen sind. Sie müssen Erfolg haben.

Es ist nur ein Fehler beim Bauen mit mehreren Frameworks im Objective-C Swift-Projekt.

 enter image description here

1
Vinod Supnekar

Manchmal wird der Compiler über die Syntax in Ihrer Klasse verwirrt. Dies geschieht häufig, wenn Sie die Quelle von einem anderen Ort aus einfügen.

Versuchen Sie, die "nicht aufgelöste" Quelldatei auf das Nötigste zu reduzieren (Reinigung und Gebäude). Nach dem erfolgreichen Erstellen fügen Sie Ihrer Klasse die gesamte Komplexität zurück.

Dies hat es für mich verschwunden, wenn Xcode nicht neu gestartet wurde.

1
snakeoil

Weil du es nicht erklärt hast. Wenn Sie eine Variable einer anderen Klasse verwenden möchten, müssen Sie sie verwenden 

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    var DestViewController : ViewController = segue.destinationViewController as ViewController
    DestViewController.signedIn = false
}

Sie müssen diesen Code am Ende des NewClass-Codes einfügen

1
Fil0tti

Ihre NewClass erbt von UIViewController. Sie haben signedIn in ViewController deklariert. Wenn Sie möchten, dass NewClass diese Variable identifizieren kann, muss sie in einer Klasse deklariert werden, von der Ihre NewClass erbt.

1
M Johnson

Ein anderer Ort, an dem ich diesen Fehler gesehen habe, ist, wenn Ihr Projektmehrere ZieleANDmehrere überbrückende Headerhat. Wenn es sich um eine gemeinsam genutzte Klasse handelt, müssen Sie sicherstellen, dass Sie die Ressource allen Bridging-Headern hinzufügen.

Ein guter Tipp ist, im linken Issue Navigator-Fenster nachzuschauen. Das Stammobjekt zeigt das Ziel, das die Beschwerde ausstellt.

0
capikaw

Wenn es sich um eine von Ihnen erstellte Klasse handelt, stellen Sie sicher, dass die Klasse nicht geschachtelt ist.

F.e 

A.Swift

class A {

   class ARelated {

   }
}

beim Aufruf von var b = ARelated() wird 'Verwendung eines nicht aufgelösten Bezeichners: ARelated' angezeigt.

Du kannst entweder:

1) Trennen Sie die Klassen, falls gewünscht, in derselben Datei:

A.Swift

class A {

}

class ARelated {

}

2) Behalten Sie dieselbe Struktur bei und verwenden Sie die umgebende Klasse, um zur Unterklasse zu gelangen:

var b = A.ARelated

0
htafoya

Ich habe einen dummen Fehler gemacht. Ich habe vergessen, die Klasse als öffentlich oder offen zu erwähnen, während der Code im Arbeitsbereich von cocoapod aktualisiert wurde. 

Bitte überprüfen Sie, ob der Zugriff erfolgt, wenn Sie in einem separaten Arbeitsbereich arbeiten.

0